2014-10-09 52 views
-2

我有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 

我想用intersect()功能中的R

+2

这个问题用'r'和'python'标记是很奇怪的。你是否打算你的解决方案在Python和R中都包含代码? – 2014-10-09 13:50:22

回答

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") 
+0

这会给至少有两个字符串? – BioMan 2014-10-09 13:50:27

+0

是的,这是两个或更多的字符串。 – josliber 2014-10-09 13:51:06

相关问题