Можно было бы разместить наборы данных в list
, извлечь столбец 'variable' и получить элементы, общие с intersect
Reduce(intersect, lapply(mget(paste0("df", 1:3)), `[[`, "Variable"))
#[1] "a" "e"
или аналогичный вариант с tidyverse
library(tidverse)
mget(paste0("df", 1:3)) %>%
map(~ .x %>%
pull(Variable)) %>%
reduce(intersect)
#[1] "a" "e"
Или мы связываем наборы данных в один, сгруппированный по 'Variable', filter
количество уникальных групп, равное 3, и извлекаем его 'Variable'
bind_rows(df1, df2, df3, .id = 'grp') %>%
group_by(Variable) %>%
filter(n_distinct(grp) == 3) %>%
distinct(Variable) %>%
pull(Variable)
[1] "a" "e"
данные
df1 <- structure(list(Variable = c("a", "g", "e"), Val = c(0.9, 0.3,
0.1)), class = "data.frame", row.names = c(NA, -3L))
df2 <- structure(list(Variable = c("h", "a", "e"), Val = c(0.2, 0.7,
0.9)), class = "data.frame", row.names = c(NA, -3L))
df3 <- structure(list(Variable = c("z", "a", "e"), Val = c(0.5, 0.7,
0.9)), class = "data.frame", row.names = c(NA, -3L))