从另一个列表中的一个列表中查找字符 [R]
Finding characters from one list in other list [R]
可能是一个基本问题,但我是 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
非常感谢任何帮助!!
您可以使用这种方法:
tmp <- lapply(list1, intersect, list2$XX)
final_list <- tmp[as.logical(sapply(tmp, length))]
# $value1
# [1] "character1"
#
# $value3
# [1] "character1" "character3"
第一步,返回普通字符串。第二步,删除空列表元素。
可能是一个基本问题,但我是 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
非常感谢任何帮助!!
您可以使用这种方法:
tmp <- lapply(list1, intersect, list2$XX)
final_list <- tmp[as.logical(sapply(tmp, length))]
# $value1
# [1] "character1"
#
# $value3
# [1] "character1" "character3"
第一步,返回普通字符串。第二步,删除空列表元素。