получить уникальные значения одного столбца в списке фреймов данных в R - PullRequest
1 голос
/ 04 марта 2020

У меня есть список фреймов данных, и я хочу, чтобы все уникальные значения 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 одинаковые, поэтому я не думаю, что это наиболее элегантное в вычислительном отношении решение

1 Ответ

1 голос
/ 04 марта 2020

Мы можем 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
...