我有一个名为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]]
的名称相同。
如果有令人困惑的部分,请告诉我。我试着尽可能清楚地写出来。谢谢!
答案 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')])