获得R中数据帧列表中单列的唯一值

问题描述 投票:0回答:1

我有一个数据框列表,并希望它们之间具有a的所有唯一值

dd <- list()
dd$data <- list(one = data.frame(a = c(1,2,3)),
           two = data.frame(a = c(1,2,4)))
$data
$data$one
  a
1 1
2 2
3 3

$data$two
  a
1 1
2 2
3 4

我想退货

1 2 3 4

我知道我可以将两个数据帧绑定在一起,然后寻找唯一值,但是在我的实际数据集中,数据帧列表的大小不同,列不同,只有a相同,所以我认为这不是计算量最大的优雅的解决方案

r lapply purrr
1个回答
0
投票

我们可以unlist data.frames并获得unique元素

unique(unlist(dd$data))
#[1] 1 2 3 4

如果只需要提取'a'列,则>

unique(unlist(lapply(dd$data, `[[`, "a")))
#[1] 1 2 3 4

或带有map/pluck

library(dplyr)
library(purrr)
map(dd$data,  pluck, "a") %>%
    flatten_dbl %>%
    unique
#[1] 1 2 3 4
© www.soinside.com 2019 - 2024. All rights reserved.