我有六个数据帧,z1,z2,... z6。 (从一个excel文件的六个不同表中读取)。
我需要对这些数据框进行子集化并构建一些模型。每个过程都是相同的。我希望在循环中完成它,但无法找到正确的语法。 (我试图使用粘贴和分配功能,但它没有帮助)。 例如,我想要
for (i in 1:6){
Z=subset(Zi,Zi$var1==1)
}
Zi应该是Z1,Z2,Z3,它们已经定义了。我可以通过粘贴函数生成一个变量,在每次迭代中都是Z1,Z2,如
temp = paste('Z',i,sep ='')但我不能在上面的代码中用'temp'代替Zi。
关于类似问题的其他线程有一些讨论,但我无法找到与此直接相关的任何内容。如果我遗漏了什么,请指出我正确的主题。
答案 0 :(得分:1)
我们使用list
在mget
中获取'值',在list
(lapply(..)
)上循环,并根据'var1'列对行进行子集化
lapply(mget(paste0('Z', 1:6)), subset, subset=var1==1)
答案 1 :(得分:0)
数据的列名是否相似?如果是这样,您可能希望这样做:
library(dplyr)
"Z" %>%
paste0(1:6) %>%
mget %>%
bind_rows(.id = "source") %>%
filter(var1 == 1)