函数可以工作( boot.stepAIC ),但在另一个函数中抛出错误 - 环境问题?

2023-11-23

今天我在 R 代码中发现了一个奇怪的行为。 我尝试了一个包 {boot.StepAIC},其中包含一个用于 AIC 逐步回归结果的引导函数。然而,我不认为统计背景是问题所在(我希望如此)。
我可以在 R 的顶层使用该函数。这是我的示例代码。

require(MASS)
require(boot.StepAIC)

n<-100
x<-rnorm(n); y<-rnorm(n,sd=2); z<-rnorm(n,sd=3); res<-x+y+z+rnorm(n,sd=0.1)
dat.test<-as.data.frame(cbind(x,y,z,res))
form.1<-as.formula(res~x+y+z)
boot.stepAIC(lm(form.1, dat.test),dat.test) # should be OK - works at me

但是,我想将其包装在一个自己的函数中。我将数据和公式传递给该函数。但我在 boot.stepAIC() 中收到错误消息:

模型拟合在 100 个 bootstrap 样本中失败 错误 strsplit(nam.vars, ":") :非字符参数

# custom function
fun.boot.lm.stepAIC<-function(dat,form) {
  if(!inherits(form, "formula")) stop("No formula given")
  fit.lm<-lm(formula=form,data=dat)
  return(boot.stepAIC(object=fit.lm,data=dat))
 }
fun.boot.lm.stepAIC(dat=dat.test,form=form.1)
# results in an error 

那么错误在哪里呢?我想这一定与当地和全球环境有关,不是吗?


Using do.call as in 使用粘贴公式创建的 lme 拟合的方差分析测试失败提供了答案。

boot.stepAIC无权访问form当在函数内运行时;可以在这样的全球环境中重新创建;我们看到lm正在使用form.1作为公式,并删除它使得boot.stepAIC fail.

> form.1<-as.formula(res~x+y+z)
> mm <- lm(form.1, dat.test)
> mm$call
lm(formula = form.1, data = dat.test)
> rm(form.1)
> boot.stepAIC(mm,dat.test)
# same error as OP

Using do.call确实有效。这里我使用as.name以及;否则mm对象携带整个数据集而不仅仅是它的名称。

> form.1<-as.formula(res~x+y+z)
> mm <- do.call("lm", list(form.1, data=as.name("dat.test")))
> mm$call
lm(formula = res ~ x + y + z, data = dat.test)
> rm(form.1)
> boot.stepAIC(mm,dat.test)

要将其应用于原始问题,我会这样做:

fun.boot.lm.stepAIC<-function(dat,form) {
  if(!inherits(form, "formula")) stop("No formula given")
  mm <- do.call("lm", list(form, data=as.name(dat)))
  do.call("boot.stepAIC", list(mm,data=as.name(dat)))
}    
form.1<-as.formula(res~x+y+z)
fun.boot.lm.stepAIC(dat="dat.test",form=form1)

这也有效,但整个数据集也包含在最终输出对象中,以及控制台的最终输出中。

fun.boot.lm.stepAIC<-function(dat,form) {
  if(!inherits(form, "formula")) stop("No formula given")
  mm <- do.call("lm", list(form, data=dat))
  boot.stepAIC(mm,data=dat)
}    
form.1<-as.formula(res~x+y+z)
fun.boot.lm.stepAIC(dat=dat.test,form=form.1)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

函数可以工作( boot.stepAIC ),但在另一个函数中抛出错误 - 环境问题? 的相关文章

  • 如何使用 R 将每个文件的数据添加为附加行,从而将不同的 .csv 文件合并为一个完整的文件?

    我有几个不同的文件夹 它们都包含一个 csv 文件 所有这些 csv 文件都有一个单独的列 其中包含实验的一种条件的数据 我想以将每个文件的数据添加为新列的方式合并这些 csv 文件 目前 它看起来像这样 C1 csv 102 106 15
  • 融化R中的下半矩阵

    如何融化下半三角形加对角矩阵 11 NA NA NA NA 12 22 NA NA NA 13 23 33 NA NA 14 24 34 44 NA 15 25 35 45 55 A lt t matrix c 11 NA NA NA NA
  • 从日期变量创建月末日期

    我有一个包含日期变量的大型数据框 它反映了该月的第一天 有没有一种简单的方法来创建代表该月最后一天的新数据框日期变量 以下是一些示例数据 date start month seq as Date 2012 01 01 length 4 by
  • randomForest 包在删除一个预测类时的奇怪行为

    我正在运行一个随机森林模型 它产生的结果从统计角度来看对我来说完全没有意义 因此我确信有些东西mustrandomForest 包的代码出现错误 至少在模型的本次迭代中 预测 左侧变量是具有 3 种可能结果的政党 ID 民主党 独立党 共和
  • 从 n,k 维矩阵数组中减去 n,k 维矩阵

    如果我有一个数组A A lt array 0 c 4 3 5 for i in 1 5 set seed i A i lt matrix rnorm 12 4 3 如果我有矩阵 B set seed 6 B lt matrix rnorm
  • R 可以创建带有可单击条形图的条形图图像以插入网页吗?

    我知道如何创建条形图 以及如何将其粘贴在网页上 例如 使用hwriteImage in the 作家包 http www embl de gpau hwriter 我想要的是每个栏都是一个在鼠标悬停时突出显示的区域 并且每个栏在单击时都有不
  • R - 计算 bin 中特定值的数量

    我有一个如下所示的数据框 df Value lt c 1 1 0 2 1 3 4 0 0 1 2 0 3 0 4 5 2 3 0 6 Sl lt c 1 20 df lt data frame Sl Value gt df Sl Value
  • 使用officer R导出时如何提高ggplots的分辨率

    我想将图表导出到 PPT 并使用Officer 包来实现相同的目的 但是 图表的默认分辨率较低 我想更改它 我目前正在使用以下电话 ph with gg p1 type chart res 1200 其中 p1 是 ggplot 对象 运行
  • 如何在 data.table 中分组后使用条件计算行数

    我有以下数据框 dat lt read csv s1 s2 v1 v2 a b 10 20 a b 22 NA a b 13 33 c d 3 NA c d 4 5 NA c d 10 20 dat gt A tibble 6 x 4 gt
  • 在R中循环子文件夹

    我正在 R 环境中包含多个子文件夹的文件夹中工作 我想要循环遍历多个子文件夹 然后在每个子文件夹中调用 R 脚本来执行 我想出了下面的代码 但我的代码似乎添加了 到子文件夹列表 我收到错误 文件中的错误 文件名 r 编码 编码 无效的 描述
  • 如何按时间间隔匹配数据帧?

    这是我从数据记录器导入原始数据时经常出现的问题 温度记录仪设置为每十分钟记录一次温度 单独的气体记录仪设置为记录最后十分钟间隔内使用的气体 我想将这两个记录器的数据合并到一个数据框中进行绘图和分析 但时间并不完全一致 我希望每十分钟的时间段
  • picker输入字体或背景颜色

    我在闪亮的仪表板中使用 pickerInput 这很好 除了一个问题 背景颜色和字体颜色太相似 使得过滤器选择难以阅读 有什么办法可以改变背景或字体颜色吗 如果可能的话 我想继续使用 pickerInput 但如果有一个带有 selectI
  • `as.matrix` 和 `as.data.frame` S3 方法与 S4 方法

    我注意到定义as matrix or as data frame作为 S4 类的 S3 方法 使例如lm formula objS4 and prcomp object 开箱即用 如果它们被定义为 S4 方法 则这不起作用 为什么将方法定义
  • R Shiny:如何将无功值从闪亮模块返回到主服务器功能?

    我有一个简单的玩具示例 它使用 add removeBtn 模块在 第一个 模块中添加和删除 UI 我需要跟踪单击 添加 删除 的次数 如果我不使用模块 这很容易 但我试图在嵌套模块的上下文中执行此操作 代码如下 但基本上 我似乎无法访问主
  • 在 R 的 for 循环中创建动态命名对象并分配动态值

    我正在尝试创建一套动态命名的新对象 例如 temp2015 使用 for 循环 并存储动态值 具体来说 其他对象的名称 例如 Y2015 和 for 循环中使用的值 例如 2015 在动态命名的新对象中 我不确定为什么下面的代码不起作用 Y
  • 闪亮的应用程序包:css 和所有 www/ 目录内容

    我正在尝试将 Shiny 应用程序转换为 R 包 但我在处理有关 www 目录以及 松散 文件的所有问题时遇到了问题 我闪亮的应用程序运行得很好 但是当我尝试 打包它 时 它不起作用 我闪亮的应用程序目录 my shiny app R ut
  • 在 R 中提取 data.frames 列表的名称以及 data.frame 中的值

    在下面的代码中 j是 data frames 的命名列表 我想知道是否有办法 a 提取变量的数值 即one short and one long 在 data frames 内并附加它们的相关名称 即 AAA or BBB or CCC 到
  • data.table 抛出“找不到对象”错误[重复]

    这个问题在这里已经有答案了 我有一个数据表 library data table mydt lt data table index 1 10 当我在全局环境中尝试它时 我可以让它工作 但当我在调试器中或在包测试中使用它时却无法工作 问题是我
  • R中IF函数的使用

    我正在短跑ifR 中的函数 但收到以下警告消息 In if runif 50 0 1 lt 0 69 the condition has length gt 1 and only the first element will be used
  • 当设置 coord_fixed 时,ggplot/shiny 中的鼠标悬停坐标是错误的

    我正在使用问题中的答案 当您将鼠标悬停在闪亮的 ggplot 上时出现工具提示 https stackoverflow com questions 27965931 tooltip when you mouseover a ggplot o

随机推荐

  • 修改 Info.plist 以在运行时设置“Application is agent(UIElement)”

    假设我需要让用户能够通过首选项面板选择是否将该应用程序用作 标准 带有停靠图标和菜单 或作为代理应用程序 仅带有状态栏菜单 我想我需要在执行期间以编程方式修改应用程序的 Info plist 将参数 应用程序是代理 更改为是 否 这是正确的
  • 内核模块中的 EXPORT_SYMBOL | insmod 期间未定义的符号

    我有一个来自 a ko 内核模块 的导出函数 foo 和 foo1 foo1 接受输入参数 一个函数指针 我从 b ko 调用 foo1 并将 foo 作为输入参数传递 我看到 b ko 未知符号 foo 的 insmod 失败 即使 a
  • Java 11 HttpClient - HttpClient 与并发 HttpRequest 的最佳比率是多少

    在下面的示例中 我创建一个 Java 11 httpClient 然后创建多个并发 HttpRequest 这是不好的做法吗 每个 HttpRequest 都应该有自己的 HttpClient 吗 HttpClient 可以拥有的 Http
  • 使用 gsub 删除第一个数字字符之前的所有字符串

    使用 gsub 删除 R 中第一个空格之前的所有字符串 在此示例中 我们尝试删除空格之前的所有内容sub 1 D name 我正在寻找非常相似的东西 但我对正则表达式不太熟悉 我想删除第一个数字字符之前的所有内容 但不删除它 例如 x lt
  • UI5控件的生命周期是如何运作的?

    有人可以更详细地解释 UI5 控件默认事件的生命周期吗 我知道有文档中的此页面它概述了控件生命周期 但是 我认为它非常简短 需要更详细的内容 有人可以列出控件事件的顺序并解释每个事件的作用吗 你是绝对正确的 控件生命周期的详细信息和实现细节
  • 如何使用 SSL/TLS 和/或消息级安全保护 RESTful php Web 服务

    我有一个用 php 编写的 RESTful Web 服务 它使用 JSON 进行通信 传输的一些数据确实很敏感 密码 我正在寻找一种方法来实现服务的合理安全级别 客户端是 silverlight 4 应用程序 我一直在寻找有关如何实施 SS
  • NodeJS 的 Web Sockets 服务器端实现

    这个问题的部分原因可能是客户端的讨论太多 让我只见树木不见森林 无论如何 这就是我想做的 我需要一个独立于平台的 WebSocket 服务器端实现 我希望它在 NodeJS 中运行 现在 我发现的有关该主题的内容 99 都与 socket
  • 如何使用照片框架快速循环浏览照片库

    我有一个应用程序 可以为我的应用程序上的每张门票创建一个独特的照片库 我需要弄清楚如何循环浏览该画廊 以便我可以一次将一张图像上传到服务器 我在 YouTube 上遵循了这些教程 Video 我目前使用 Swift 作为我的语言 我的最终目
  • 如何在 VC++ 中毒害标识符?

    功能中毒在 C 中是非常有用的技术 一般来说 它指的是使某个功能不可用 例如如果您想禁止在程序中使用动态分配 您可以 poison malloc 函数因此无法使用 中毒 标识符意味着 中毒 之后对标识符的任何引用都是硬编译器错误 例如 参见
  • Angular 6:错误类型错误:无法读取未定义的属性“toLowerCase”

    我正在以关于用户的角度六创建 CRUD 应用程序 当我尝试添加新用户时 出现以下错误 这是我收到的错误 core js 12301 ERROR TypeError Cannot read property toLowerCase of un
  • 基于 Microsoft Visual C++ Express 2010 的 64 位构建

    我正在尝试使用 Visual C Express 2010 将 VC 项目编译为 64 位 我知道 64 位编译器没有默认安装 VC Express 因此我按照此处指定的方式安装了适用于 Windows 7 的 Windows SDK ht
  • 使用 jQuery 在新窗口中打开所有外部链接

    这里是 jQuery 新手 我发现了几个网页与我想要做的事情很接近 但又不完全一样 其实我觉得以下是supposed实际工作 但它说 href http 无法识别 语法错误 有什么帮助吗 document ready function a
  • 为什么 apply 尚未绑定到 Javascript 中的函数?

    假设 为了解决这个问题 我希望能够在 Javascript 中创建一个函数 将一个数组的所有元素附加到另一个数组 如果您有权访问目标数组 实现此目的的一种方法是 var destination 1 2 3 var source 4 5 Ar
  • 为什么跳转到 case 标签会在此 switch 中交叉初始化?

    考虑以下代码 include
  • 一般来说,存储过程比现代 RDBMS 上的内联语句更有效吗? [复制]

    这个问题在这里已经有答案了 传统观点认为存储过程总是更快 所以 因为它们总是更快 所以使用它们每时每刻 我很确定这是有历史背景的 这种情况曾经发生过 现在 我并不是主张不需要存储过程 而是我想知道在现代数据库 例如 MySQL SQL Se
  • 找到图中访问所有节点的最短路径

    我有一个加权无向图G with n顶点 其中两个顶点是X and Y 我需要找到起始于的最短路径X 结束于Y并穿过 G 的所有顶点 以任何顺序 我怎样才能做到这一点 这不是旅行商问题 我不需要只访问每个顶点一次 也不想返回第一个顶点 这个问
  • F# 中的事件和委托

    我没有任何 F 经验 但有几行 C 测试代码 用于我制作的框架 需要用 F 重写 任何帮助 将不胜感激 bar Ready new Agent ReadyHandler bar Ready static void bar Ready str
  • 如何在应用程序内浏览器窗口中打开链接

    我想知道如何在应用程序内浏览器中打开链接 就像这样 你可以使用以下方法来实现flutter web browser以 Android chrome 选项卡样式在应用程序内打开网页的插件 Ex body new Center child ne
  • 从Python中的多维列表中删除前导和尾随零[关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 我有一个清单 例如 my list 1 2 2 1 0 0 1 2 1 2 0 0 1
  • 函数可以工作( boot.stepAIC ),但在另一个函数中抛出错误 - 环境问题?

    今天我在 R 代码中发现了一个奇怪的行为 我尝试了一个包 boot StepAIC 其中包含一个用于 AIC 逐步回归结果的引导函数 然而 我不认为统计背景是问题所在 我希望如此 我可以在 R 的顶层使用该函数 这是我的示例代码 requi