基于 step() 的用户定义函数给出: eval(expr, envir, enclos) 中的错误:未找到对象“X”

2024-01-27

我正在尝试构建一个包含以下内容的函数ordiR2step()函数从vegan包裹。该函数基于step()功能。

这是在函数之外完美运行的代码:

    install.packages("vegan")
    require(vegan)
    data(mite) 
    data(mite.env) #explanatory variables
    mite.hel = decostand(mite, "hel") #response variable
    mod0 <- rda(mite.hel ~ 1, mite.env)  # Model with intercept only 
    mod1 <- rda(mite.hel ~ ., mite.env)  # Model with all explanatory variables
    step.res <- ordiR2step(mod0, scope = formula(mod1), direction="forward") 
    step.res$anova 

但是,如果我尝试将其包装到一个函数中:

    forward <- function(X, Y) {
    intercept <- rda(X ~ 1, data = Y)  # Model with intercept only
    model <- rda(X ~ ., data = Y)  # Model with all explanatory variables
    # this is where debugging is stuck
    forStep <- ordiR2step(object=intercept, scope = formula(model), 
                    direction = "forward", trace = FALSE)
    list(forStep$anova)
    }
    forward(mite.hel, mite)

我收到以下错误:Error in eval(expr, envir, enclos) : object 'X' not found

我知道尝试包装这些类型的函数时可能会出现一些问题,这些问题已经在 stackoverflow 和其他地方讨论过很多次,例如here http://www.mail-archive.com/r-help@r-project.org/msg75827.html, here https://stackoverflow.com/questions/9161273/use-stepaic-on-a-list-of-models and here https://stackoverflow.com/questions/16601106/missing-object-error-when-using-step-within-a-user-defined-function。然而,这些解决方案似乎都没有正常工作。

根据我对这种行为的理解,step()函数,并通过扩展ordiR2step(),无法从函数内定义的环境中读取,而只能从工作空间环境中读取,因为如果我定义X在调用该函数之前,一切正常。然而,这违背了目的,所以我尝试了一些建议的解决方案,例如:

    forward2 <- function(X, Y) {
    intercept <- do.call("rda",list(X ~ 1, data = Y))  
    model <- do.call("rda", list(X ~ ., data = Y))  
    forStep <- ordiR2step(object=intercept, scope = formula(model), 
                    direction = "forward", trace = FALSE)
    list(forStep$anova)
    }
    forward2(mite.hel, mite.env)

同样的错误...没有骰子...有什么建议吗?谢谢你的时间!


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于 step() 的用户定义函数给出: eval(expr, envir, enclos) 中的错误:未找到对象“X” 的相关文章

  • 添加有关白天/黄昏/夜晚/黎明的信息以在 R 中跟踪数据

    我有一个数据集 其中包含几个月的日期时间 纬度和经度变量的跟踪数据 如下所示 gt start lt as POSIXct 2018 08 01 00 00 00 format Y m d H M S tz UTC gt datetime
  • 加拿大人口普查地图分区 R

    我对 R 和映射非常陌生 我想创建某些数据的映射 我有一组名为 D Montreal 的数据 显示 2010 年前往蒙特利尔的加拿大人口普查部门游客来自哪个国家 我想使用此数据创建一个地图 以显示有多少人来自不同地区 也许可以通过对根据人数
  • 从 foreach 循环赋值

    我想并行化一个循环 例如 td lt data frame cbind c rep 1 4 2 rep 1 5 rep 1 10 2 names td lt c val id res lt rep NA NROW td for i in l
  • 将值添加到 rCharts hPlot 工具提示

    我想通过 rCharts 向标准 Highcharts 工具提示添加一些额外的值 示例代码 require rCharts df lt data frame x c 1 5 y c 5 1 z c A B C D E name c K L
  • dplyr :过滤一系列行(在一列中)

    虚拟数据框 id family lt c 1 1 2 2 3 3 people lt c male female male female male children dataset lt data frame id family peopl
  • 当按多列分组时,如何命名 dplyr 中的 group_split 列表

    我在 dplyr 中使用 group split 在分割了多个列后 我很难命名列表 当我们按一列分组时 我知道该怎么做here https stackoverflow com questions 57107721 how to name t
  • 在 R 中将文本文件拆分为段落文件

    我正在尝试将一个巨大的 text 文件拆分为多个 text 文件 每个文件仅包含一个段落 让我举个例子 我需要这样的文字 这是第一段 这没有任何意义 因为这只是一个例子 这是第二段 和前一段一样毫无意义 另存为两个独立的 txt 文件 其中
  • ggmap 错误:GeomRasterAnn 是使用不兼容版本的 ggproto 构建的

    我正在使用 ggmap 并收到以下错误 Error GeomRasterAnn was built with an incompatible version of ggproto Please reinstall the package t
  • 使用 ggplot_build 和 ggplot_gtable 后使用 ggsave 保存图形

    我正在通过更改 ggplot build 生成的数据来修改使用 ggplot 构建的图表 原因类似于包括 geom boxplot 中填充美学中使用的缺失因子水平的空间 https stackoverflow com questions 1
  • 在 r 中的 unique() 函数中使用管道不起作用

    我在使用管道运算符 gt 和 unique 函数时遇到一些麻烦 df data frame a c 1 2 3 1 b a unique df a no problem here df gt unique a not working her
  • 使用 Rcpp 得出斐波那契数列的意外结果

    我刚刚开始使用Rcpp很抱歉 如果我错过了一个简单的步骤或类似的东西 我已经尝试过这个 sourceCpp library Rcpp sourceCpp code include
  • 使用列表中的数据框:删除变量,添加新变量

    定义一个列表dats有两个数据框 df1 and df2 dats lt list df1 data frame a sample 1 3 b sample 11 13 df2 data frame a sample 1 3 b sampl
  • Rglpk - 梦幻足球阵容优化器 - For 循环输出的 Rbind

    我有一个使用 Rgplk 的梦幻足球阵容优化器 它使用for循环生成多个最佳阵容 其数量由用户输入 代码如下 Lineups lt list for i in 1 Lineup no matrix lt rbind as numeric D
  • 如何获得 R 帮助?

    R 包可能有哪些可用文档 例如我尝试理解sp包裹 此外help sp 还有哪些用于搜索帮助和文档的其他功能 获取有关您知道其名称的函数的帮助 Use http www inside r org r doc utils Question或者
  • 创建后修改 ggplot 对象

    有没有首选的修改方式ggplot创建后的对象 例如 我建议我的学生将 r 对象与 pdf 文件一起保存以供以后更改 library ggplot2 graph lt ggplot mtcars aes x mpg y qsec fill c
  • 数据表中的 NA

    我有一个data table其中包含一些组 我对每个组进行操作 有些组返回数字 其他组返回NA 因为某些原因data table很难将所有东西重新组合在一起 这是一个错误还是我误解了 这是一个例子 dtb lt data table a 1
  • 如何在折线图中显示 Sep-12 格式的数据并抑制网格线和灰色背景?

    我正在努力使日期格式正确 数据已经是melt 格式 数据中有四个变量碰巧共享相同的数据 我只是想绘制一个简单的四线折线图 每个变量作为一条单独的线 并将 Sep 12 显示为最新数据点 我正在使用旧的 ggplot 请随意 我有两个问题 第
  • dplyr 总结小计

    Excel 中数据透视表的一大优点是它们会自动提供小计 首先 我想知道 dplyr 中是否已经创建了任何可以实现此目的的东西 如果没有 实现它的最简单方法是什么 在下面的示例中 我按气缸和化油器的数量显示了平均排量 对于每组气缸 4 6 8
  • 如何在r中进行左连接[重复]

    这个问题在这里已经有答案了 我有两个数据集一和二 数据集一 a b c 111 a 1 112 b 2 113 c 3 114 d 4 115 e 5 数据集二 e d g 222 ss 11 111 ff 22 113 ww 33 114
  • R 编程中的字符串分割

    目前 下面的脚本将组合的项目代码拆分为特定的项目代码 rule2 lt c MR df 1 lt test grep paste rule2 sep collapse test Name y SpaceName 1 lt function

随机推荐