查找列表中的某些数据帧并组合这些数据帧

时间:2014-03-11 21:16:24

标签: r for-loop dataframe

我有一个名为score.list的26个数据框列表,我编写了一个代码,告诉我哪些数据框不完整。所以这段代码给了我列表中数据框的名称,但它并没有告诉我列表中数据框的索引。

示例...代码告诉我名为p08的数据帧和另一个名为p18的数据帧未完成。因此,他们需要结合其后的数据框。因此,如果名为p08的数据框为score.list[[8]],则应将其与score.list[[9]]结合使用。它应该用新建的数据框替换[[8]],然后应从列表中删除score.list[[9]]

我猜测下面代码之类的东西可能会起到组合作用的作用。替换数据框...我不确定以下代码是否有效..

score.list[[8]] <- rbind(score.list[[8]], score.list[[9]])

这是我尝试过的......但是并没有完全奏效,因为它在组合之后没有制作新的数据框。我收到此错误消息:

Error in if (names(score.list[i]) == names(score.list[i + 1])) { : 
  missing value where TRUE/FALSE needed

for(i in 1:length(score.list)){
  if(names(score.list[i])==names(score.list[i+1])) {
    a <- score.list[i]
    b <- score.list[i+1]
    score.list[[i]] <- rbind(a, b)
    print(score.list[[i]])
  }  
}

我写if(names(score.list[i]==names(score.list[i+1]))的原因是因为需要组合在一起的数据框的名称在列表中是相同的。未完成的数据框与其后面的数据框名称相同。因此,数据框score.list[[8]]的名称与数据框score.list[[9]]的名称相同。

如果有令人困惑的部分,请告诉我。我试着尽可能清楚地写出来。谢谢!

1 个答案:

答案 0 :(得分:0)

这可以帮到你:

## a list example 
score.list <- 
list(l1= data.frame(x=1),
     l2=data.frame(x=2),
     l3= data.frame(x=3))
## use %in% to select some elements 
## here I am selecting list l1 and l3
do.call(rbind,
   score.list[names(score.list) %in% c('l1','l3')])