【问题标题】:Return unique rows in list of dataframes返回数据框列表中的唯一行
【发布时间】:2020-11-15 06:21:03
【问题描述】:

我有一个数据框列表。我想在每个数据帧中找到唯一的行,然后将该唯一数据帧列表输出到 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,但得到一个错误。

上面的虚拟数据抛出错误:

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

我的真实数据抛出错误:

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

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

【问题讨论】:

    标签: r lapply


    【解决方案1】:

    为列表中的每个元素应用unique,然后使用do.call 组合数据帧。

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

    【讨论】:

      【解决方案2】:

      我们也可以使用distinctmap

      library(purrr)
      library(dplyr)
      map_dfr(y, ~ distinct(.x) %>%
                       mutate(across(everything(), as.character)))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-09-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-02-20
        • 2021-07-11
        • 2020-11-27
        相关资源
        最近更新 更多