【发布时间】:2016-11-16 06:58:38
【问题描述】:
我一生都无法弄清楚我的 for 循环中的简单错误在哪里,无法对多个数据帧执行相同的分析,并利用用于识别新数据的变量和额外字符串输出每次迭代的新数据帧框架。
这是我的代码:
john 和jane 是我希望循环遍历并与bcm 比较以查找行中重复的结果中的两个数据帧。
x <- list(john,jane)
for (i in x) {
test <- rbind(bcm,i)
test$dups <- duplicated(test$Full.Name,fromLast=T)
test$dups2 <- duplicated(test$Full.Name)
test <- test[which(test$dups==T | test$dups2==T),]
newname <- paste("dupl",i,sep=".")
assign(newname, test)
}
到目前为止,我可以在不包含 x 数据的情况下正确完成命名,或者在不正确命名新数据帧的情况下正确完成循环。
预期结果:我希望创建新的数据框 dupl.john 和 dupl.jane 以显示与 bcm 相比重复的行。
我了解lapply() 可能更好用,并且我非常愿意接受这种形式的解决方案。我不知道如何使用它来解决我的问题,所以我转向了更熟悉的 for 循环。
编辑:
对不起,如果我没有更清楚。我总共有大约 13 个数据框,我想对其进行相同的分析以在 $Full.Name 中找到重复的行。我可以执行循环的前 4 行,然后执行 dupl.john <- test 13 次(对于每个数据帧),但我故意尝试编写一个 for 循环或 lapply() 以获得更多 R 知识,因为我确信效率更高。
【问题讨论】:
-
试试
test <- rbind(bcm,get(i))。确实有些lapply可能很方便。