Найти общие элементы в списке - PullRequest
1 голос
/ 27 апреля 2020

Я могу найти общие элементы из каждой информации в небольшом списке. Вот упрощенный пример:

data_1 <- c("A","B")
data_2 <- c("A","B","C")
data_3 <- c("A","B","C","D")
data_4 <- c("A","B","F","N")

list.a <- list(data_1,data_2,data_3,data_4)

# find common elements
shared <- Reduce(intersect, list(list.a[[1]], list.a[[2]], list.a[[3]]), list.a[[4]]))  

# outputs
print(shared)                 
[1] "A" "B"           

Но проблема в реальной работе такова: список действительно большой, скажем, он содержит 100 данных, тогда этот подход больше не эффективен и может привести к ошибкам. Есть ли способ избежать перечисления всех из них list(list.a[[1]], list.a[[2]], list.a[[3]]), list.a[[4]])? Что-то короткое и аккуратное.

Ответы [ 2 ]

1 голос
/ 27 апреля 2020

Просто используйте свой список, а не перечисляйте его подэлементы.

(shared <- Reduce(intersect, list.a))
# [1] "A" "B"
0 голосов
/ 27 апреля 2020

Здесь есть еще один вариант с reduce

library(purrr)
library(dplyr)
list.a %>%
      reduce(intersect)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...