r - 评估 R 中函数调用内的代码(在循环内使用 ICC::ICCbare)

标签 r

我想在循环中使用 ICC::ICCbare 函数。但是,ICCbare 使用具体变量名称作为输入,例如:

ICCbare(x = group, y = variable1, data = dat)

其中“group”和“variable1”都是data.frame“dat”的列(即dat$variable1); ICCbare不能与y = dat[, i]一起使用。

为了编写一个循环,我需要在 ICCbare 的函数调用中评估一些 R 代码。我的想法如下:

for(i in 1:10){
  ICCbare(group, names(dat)[i], data = dat)  
}

但是,这不起作用。打印以下错误:

Error in '[.data.frame`(data, yc) : undefined columns selected'

有没有办法在将语句 names(dat)[i]) 传递给函数调用之前先对其求值?

这是我的问题的最小工作示例:

# Create data set
dat <- data.frame(group=c(rep("A",5), 
                  rep("B",5)), 
                  variable1=1:10, 
                  variable2=rnorm(10))

# Loop
for (i in names(dat)[2:3]){
  ICCbare("group", i, data = dat)
} 

最佳答案

我同意@agstudy。这是一个不规范评价的坏例子。您可以使用此作为解决方法:

v <- "variable1"
ICCbare("group",  v, data = dat)
#Error in `[.data.frame`(data, yc) : undefined columns selected

eval(bquote(ICCbare("group",  .(v), data = dat)))
#$ICC
#[1] 0.8275862

关于r - 评估 R 中函数调用内的代码(在循环内使用 ICC::ICCbare),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26752502/

相关文章:

python - R中是否有相当于powertransform的Python函数

R:在 R 中绘制 3D 对象(虹膜数据)

r - 如何使用 lapply 按行号范围对列表中的数据帧进行子集化?

r - 比较列并将输出放在附加列中

r - 无法加载 tidyverse 库

R 尽管内存似乎可用,但无法分配内存

r - 保留尾随零

r - 在 lubridate 中,有没有办法将 ymd_hms() 日期格式转换为数字格式,然后再转换回来?

r - 用透明颜色填充密度曲线

r - 根据时间间隔对 R 中的行进行子集化