【发布时间】:2014-11-05 08:21:02
【问题描述】:
我想在循环中使用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)
}
【问题讨论】:
-
我怀疑你想多了。如果我正确理解了
ICCbare的文档(没有安装软件包),您应该将characters 传递给列名。不是这样吗?您在循环外使用的示例似乎表明使用了非标准评估。真的是这样吗?ICCbare(x = "group", y = "variable1", data = dat)不起作用? -
是的
ICCbare(x = "group", y = "variable1", data = dat)确实有效。但是,我不太确定这对我的“循环问题”有何帮助? -
那么,你试过
for(i in 1:10) ICCbare("group", names(dat)[i], data = dat)吗? -
如果@Roland 的解决方案有效,
for (i in names(dat)) ICCbare("group", i, data = dat)也应该有效。 -
两种解决方案——不幸的是——也不适合我。他们给了我和上面一样的错误信息。
标签: r