首页 > 解决方案 > 返回数据框列表中的唯一行

问题描述

我有一个数据框列表。我想在每个数据帧中找到唯一的行,然后将该唯一数据帧列表输出到 1 个新数据帧中。

从...开始y <- list(mtcars[,c(2,4)], iris[,4:5])

我首先重命名每个数据框中的列

colnames <- c("colA", "colB")
y <- lapply(y, setNames, colnames)

要单独查找唯一行,我可以使用

y1 <- unique(y[[1]])
y2 <- unique(y[[2]])

但当然,我的数据框列表要大得多,我想将其应用到大约 100 个数据框的整个列表中。我怎样才能做到这一点?我试过lapply但得到一个错误。

上面的虚拟数据会引发错误:

唯一 [[x]] 中的错误:“闭包”类型的对象不是子集

我的真实数据抛出错误:

mydf[[x]] 中的错误:无效的下标类型“列表”

我知道我的过程的最后一步,将所有内容放入一个大数据框中,是一个rbind调用(单独:rbind(y1,y2),但我也不确定如何运行rbind〜100个数据框的列表(现在只有非重复的行)

标签: rlapply

解决方案


对于列表中的每个元素应用unique,然后用于do.call组合数据框。

result <- do.call(rbind, lapply(y, unique))

推荐阅读