我有4个数据集(a,b,c,d),我想找到至少有两个数据集中存在的字符串。我的数据如下:
head(a)
[1] MLH3 PCSK7 PKMYT1 C14orf132 ANP32A POLQ 1634 Levels: AARS ABAT ABCA8 ABCC9 ABCE1 ABHD3 ABHD5 ABL1 ABLIM1 ACADVL ACAN ACAT2 ACBD3 ACD ACLY ACOT2 .
head(b)
[1] ZCCHC10 DYNLL1 ERBB2IP C17orf75 BUB1B PLK1 1311 Levels: AASDHPPT ABAT ABCA6 ABCG1 ABI1 ACAA1 ACACB ACO2 ACOX1 ACSL1 ACSL3 ACSL4 ACTR6 ADAMTS1 ADCYAP1R1 ... ZRANB2
head(c)
[1] UBE2Q1 PCSK9 ZDHHC11 GMDS PPP2R3B C20orf117 1247 Levels: ABCC2 ABCC5 ABCF1 ABCG1 ABHD14B ABHD5 ABL1 ABLIM2 ABTB2 ACAD8 ACD ACO1 ACOT9 ACSL3 ACSS2 ACTA2 ... ZYG11B
head(d)
[1] UBE2Q1 PCSK9 ZDHHC11 GMDS PPP2R3B C20orf117 1247 Levels: ABCC2 ABCC5 ABCF1 ABCG1 ABHD14B ABHD5 ABL1 ABLIM2 ABTB2 ACAD8 ACD ACO1 ACOT9 ACSL3 ACSS2 ACTA2 ... ZYG11B
我正在考虑使用R
中的intersect()
函数
答案 0 :(得分:3)
您可以在四个向量中创建一个唯一元素的列表,然后返回重复的元素,这些元素是出现在两个或多个向量中的元素:
all.vals <- c(unique(a), unique(b), unique(cc), unique(d))
unique(all.vals[duplicated(all.vals)])
# [1] "UBE2Q1" "PCSK9" "ZDHHC11" "GMDS" "PPP2R3B" "C20orf117"
请注意,我将您的第三个向量重命名为cc
,因此您没有覆盖内置函数c
:
a <- c("MLH3", "PCSK7", "PKMYT1", "C14orf132", "ANP32A", "POLQ")
b <- c("ZCCHC10", "DYNLL1", "ERBB2IP", "C17orf75", "BUB1B", "PLK1")
cc <- c("UBE2Q1", "PCSK9", "ZDHHC11", "GMDS", "PPP2R3B", "C20orf117")
d <- c("UBE2Q1", "PCSK9", "ZDHHC11", "GMDS", "PPP2R3B", "C20orf117")