【发布时间】:2014-03-11 21:16:23
【问题描述】:
我有一个名为 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]]相同。
如果有令人困惑的部分,请告诉我。我试图尽可能清楚地写出来。谢谢!
【问题讨论】:
-
当修改你的列表时记住索引的变化,可能更容易让你的检查函数返回不完整的data.frames的索引,然后用那些需要合并的合并创建一个新列表
-
嗯,好吧。只知道数据框的名称,如何找到数据框的索引?
-
您可以使用
which()并匹配列表中的名称