我在R中使用列表并尝试在各种数据帧上运行循环,这些数据帧为每个帧存储多个模型。我想在列表的第一个索引中对应于给定数据帧的模型;例如[[i]] [1],[[i]] [2]。以下示例将覆盖列表:
f1 <- data.frame(x = seq(1:6), y = sample(1:100, 6, replace = TRUE), z = rnorm(6))
f2 <- data.frame(x = seq(6,11), y = sample(1:100, 6, replace = TRUE), z = rnorm(6))
data.frames <- list(f1,f2)
fit <- list()
for(i in 1:length(data.frames)){
fit[[i]] <- lm(y ~ x, data = data.frames[[i]])
fit[[i]] <- lm(y ~ x + z, data = data.frames[[i]])
}
任何想法如何设置循环中的列表或索引,以便生成一个输出,其中第一帧的两个模型被引用为[[1]] [1]和[[1]] [2 ]和第二帧为[[2]] [1]和[[2]] [2]?感谢您的帮助。
答案 0 :(得分:3)
在应用于lapply
data.frames
的每个部分的单个list
调用中计算两个模型:
lapply(data.frames, function(i) {
list(lm(y ~ x, data = i),
lm(y ~ x + z, data=i))
})