我有几个基因名称列表如下:
的List1:
XLOC_012482
XLOC_019357
XLOC_014642
XLOC_010021
XLOC_013282
列表2:
XLOC_012482
XLOC_019357
XLOC_004860
XLOC_004022
XLOC_002278
项目list3:
XLOC_004860
XLOC_004022
XLOC_006292
XLOC_006616
XLOC_013802
我想提取所有列表对之间的共同元素。我尝试使用intersect
,但我无法在字符上使用它,而且我也不知道如何在所有成对组合上执行此操作。
答案 0 :(得分:4)
您可以将列表放在单个列表li
中,然后使用combn
作为函数参数在列表中使用intersect
:
combn(li, 2, function(x) intersect(x[[1]], x[[2]]), simplify = F)
# [[1]]
# [1] "XLOC_012482" "XLOC_019357"
#
# [[2]]
# character(0)
#
# [[3]]
# [1] "XLOC_004860" "XLOC_004022"
数据:
li <- list(c("XLOC_012482", "XLOC_019357", "XLOC_014642", "XLOC_010021",
"XLOC_013282"), c("XLOC_012482", "XLOC_019357", "XLOC_004860",
"XLOC_004022", "XLOC_002278"), c("XLOC_004860", "XLOC_004022",
"XLOC_006292", "XLOC_006616", "XLOC_013802"))
答案 1 :(得分:0)
使用table
(我使用与@ Psidom的答案相同的li
列表)也很有帮助:
tb <- table(unlist(li))
将在所有列表中为您提供每个序列及其计数:
# XLOC_002278 XLOC_004022 XLOC_004860 XLOC_006292 XLOC_006616 XLOC_010021 XLOC_012482
# 1 2 2 1 1 1 2
# XLOC_013282 XLOC_013802 XLOC_014642 XLOC_019357
# 1 1 1 2
如果要提取重复的内容:
tb[tb>1]
# XLOC_004022 XLOC_004860 XLOC_012482 XLOC_019357
# 2 2 2 2