从其他列表中的一个列表中查找字符[R]

时间:2015-08-11 09:56:03

标签: r list character

可能是一个基本问题,但我对R很新,我在列表上有点挣扎。我希望你们中的一些人可以帮助我。我试着在网上寻找类似的问题,但我找不到任何针对我的情况,对不起,如果我忽略了什么。

我有两个类似的列表:

list1
$ `value1`
[1] "character1"

$ `value2`
[1] "character2"

$ `value3`
[1] "character1" "character3" "character4"


list2
$ `XX`
[1] "character1" "character3" "character6"

$ `YY`
[1] "character1" "character2" "character3"

$ `ZZ`
[1] "character3" "character4" "character5"

我想要做的是从list2中取下标XX,在list1中找到它并输出一个只有这些出现的新列表,它们在list2的下标XX中。我不想输出TRUE / FALSE,我希望得到这样的东西:

final_list
$ `value1`
[1] "character1"

$ `value3`
[1] "character1" "character3"

我试过

list1[list2$XX]

如果值是整数,则有效,但如果是字符,则无效。然后我就像这样列出很长的名单:

$<NA>
NULL

任何帮助真的很感激!!

1 个答案:

答案 0 :(得分:1)

您可以使用此方法:

tmp <- lapply(list1, intersect, list2$XX)
final_list <- tmp[as.logical(sapply(tmp, length))]

# $value1
# [1] "character1"
#
# $value3
# [1] "character1" "character3"

在第一步中,返回常用字符串。在第二步中,删除空列表元素。