【发布时间】:2023-04-05 05:04:01
【问题描述】:
我是循环新手,从第 i 个数据帧调用变量时遇到问题。
我能够正确调用每个数据帧,但是当我应该调用每个数据帧内的指定变量时,问题来了:
例子:
for (i in 1:15) {
assign(
paste("model", i, sep = ""),
(lm(response ~ variable, data = eval(parse(text = paste("data", i, sep = "")))))
)
plot(data[i]$response, predict.lm(eval(parse(text = paste("model", i, sep = ""))))) #plot obs vs preds
}
在这里,我做了 15 次简单的单变量线性模型,效果很好。当我尝试绘制结果时,问题就来了。我应该如何调用data[i] 响应?
【问题讨论】:
-
你为什么使用
assign和eval?您可以使用列表来存储所有数据集。 -
如果您是初学者并且发现自己使用
assign、eval或parse,则很有可能在 R 中有更好的方法来执行此操作。如@VincentZoonekynd 指出,使用列表。 -
你有这种循环结构的链接吗?我试图找到一些,但我不确定它们是否是我要找的。每个数据集 (n=15) 有 68 个变量和 284 个 obs。我还想更改我调用的变量。任何帮助表示赞赏。
-
您应该使用
lapply进行循环。 -
data[i]与名为“data”的对象不同,其中 表示数字或数字序列,