【发布时间】:2016-11-10 10:22:02
【问题描述】:
我在列表中有 data.frame 对象作为自定义函数的输出,我打算只对第一个 data.frame 对象进行重复删除,而其他的不应该受到影响。我在 lapply 函数中尝试了这个来控制这个约束,但是我有下标错误。我知道这更容易单独完成,但这对我来说并不理想。谁能指出我如何在函数式编程中更容易做到这一点?有谁知道控制列表中特定对象的约束的任何有用技巧?
小例子:
myList <- list(
bar = data.frame(v1=c(12,21,37,21,37), v2=c(14,29,45,29,45)),
cat = data.frame(v1=c(18,42,18,42,81), v2=c(27,46,27,46,114)),
foo = data.frame(v1=c(3,3,33,3,33,91), v2=c(26,26,42,26,42,107))
)
这样做很容易:
.first <- unique(myList[[1L]])
res <- c(list(.first), myList[- 1L])
但我需要限制重复删除仅对第一个 data.frame 产生影响,而其他人不会删除重复项,我打算以更优雅的方式实现此功能。
想要的输出:
myOutput <- list(
bar = data.frame(v1=c(12,21,37),v2=c(14,29,45)),
cat = data.frame(v1=c(18,42,18,42,81), v2=c(27,46,27,46,114)),
foo = data.frame(v1=c(3,3,33,3,33,91), v2=c(26,26,42,26,42,107))
)
【问题讨论】:
-
为什么不能更新
myList[[1]] <- unique(myList[[1]])或者循环遍历序列lapply(seq_along(myList), function(i) if(i==1) unique(myList[[i]]) else myList[[i]]) -
更新了我的评论
-
谢谢,将此更新为答案,支持您的解决方案。
标签: r dataframe duplicates