高维矩阵中按列的公共元素

Common elements by columns in high-dimensional matrix

我有一个类似 original 的数据,其中包含更多列。

id <- c('A','B','C', 'D', 'E', 'F', 'G')
month <- c('NA', 'D', 'H', 'I', 'A', 'B', 'NA')
iso <- c('NA', 'NA', 'NA', 'A', 'B', 'C', 'NA')
original <- data.frame(id, month, iso)

我想创建一个包含列中所有常见元素的字符串,例如字符串 common:

common <- c("A", "B")

我发现了如下帖子: R: How can I find the intersection of elements from two rows of a dataframe? 或者喜欢: How to find common elements from multiple vectors?

但这些帖子并不能解决问题。在如此高维的数据集中,我需要一些“更少手动”的东西。

有线索吗?

谢谢

一个选项可以是:

Reduce(`intersect`, original)

[1] "A" "B"

试试下面的代码

library(RVenn)
overlap(Venn(original))
# [1] "A" "B"
  1. 将数据转换成列表(实际上数据集本来就是一个列表)
  2. 然后:
unli_df <- unlist(df)
unique(unli_df)

使用purrr

library(purrr)
reduce(original, intersect)
#[1] "A" "B"