使用更改的数据帧名称对循环中的数据帧进行操作

时间:2015-10-05 16:48:21

标签: r excel loops variables

我有六个数据帧,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。

关于类似问题的其他线程有一些讨论,但我无法找到与此直接相关的任何内容。如果我遗漏了什么,请指出我正确的主题。

2 个答案:

答案 0 :(得分:1)

我们使用listmget中获取'值',在listlapply(..))上循环,并根据'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)