R:在多个字符列表之间成对提取公共元素

Jon*_*Jon 5 r

我有几个基因名称列表如下:

列表1:

XLOC_012482 
XLOC_019357 
XLOC_014642 
XLOC_010021 
XLOC_013282 
Run Code Online (Sandbox Code Playgroud)

列表2:

XLOC_012482 
XLOC_019357 
XLOC_004860 
XLOC_004022 
XLOC_002278 
Run Code Online (Sandbox Code Playgroud)

项目list3:

XLOC_004860 
XLOC_004022 
XLOC_006292 
XLOC_006616 
XLOC_013802 
Run Code Online (Sandbox Code Playgroud)

我想提取所有列表对之间的共同元素.我试过使用intersect但是我不能在角色上使用它,而且我也不知道如何在所有成对组合上执行此操作.

Psi*_*dom 4

您可以将列表放入单个列表中li,然后combn在列表上使用 withintersect作为函数参数:

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"
Run Code Online (Sandbox Code Playgroud)

数据

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"))
Run Code Online (Sandbox Code Playgroud)

  • 您的“mylist”比应有的深度深一级,它们是因素变量,也可能导致问题。经过这个转换 `mylist &lt;- mylist[[1]]; mylist &lt;- lapply(mylist, as.character)` 它应该按预期工作。 (3认同)