我想在循环中使用 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/