【问题标题】:Finding characters from one list in other list [R]从另一个列表中的一个列表中查找字符 [R]
【发布时间】:2015-08-11 09:56:03
【问题描述】:

可能是一个基本问题,但我对 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

非常感谢任何帮助!

【问题讨论】:

    标签: r list character


    【解决方案1】:

    您可以使用这种方法:

    tmp <- lapply(list1, intersect, list2$XX)
    final_list <- tmp[as.logical(sapply(tmp, length))]
    
    # $value1
    # [1] "character1"
    #
    # $value3
    # [1] "character1" "character3"
    

    第一步,返回普通字符串。第二步,删除空列表元素。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-11
      • 2018-05-13
      • 2012-11-23
      • 2014-12-21
      • 2012-10-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多