【问题标题】:Checking for subset of a list in another list of lists in R在 R 中的另一个列表列表中检查列表的子集
【发布时间】:2016-04-16 17:15:36
【问题描述】:

我有一个清单:
l1 = list(1, 3, 5)

我还有另一个列表:
l2 = list(list(1, 3), list(2, 6), list(3, 5), list(1, 5))

我想检查 l1 的每个 2 项子集(即list(1, 3)、list(1, 5) 和 list(3, 5))是否存在于 l2 中。

在这种情况下,我只想直接回答 TRUE。 我该怎么做?

【问题讨论】:

    标签: r list subset


    【解决方案1】:

    首先找到l1的所有可能组合,以列表的形式返回。

    cmb <- combn(l1, 2, simplify = FALSE)
    

    擦掉我原来的答案,并以@alexis_laz 的评论为基础,你想要%in%。

    l2 <- list(list(1, 3), list(2, 6), list(3, 5), list(1, 5))
    cmb %in% l2
    # [1] TRUE TRUE TRUE
    all(cmb %in% l2)
    # [1] TRUE
    

    但是当我们在 cmets 中提到新的 l2 OP 时(我会称之为 l3),我们会得到 ​​p>

    l3 <- list(list(1, 3), list(2, 6), list(3, 5), list(1, 6)) 
    cmb %in% l3
    # [1]  TRUE FALSE  TRUE
    all(cmb %in% l3)
    # [1] FALSE
    

    【讨论】:

    • 我认为any 应该是all,不是吗?其次,list(1, 3) 和 list(3, 1) 应该被认为是相同的吗?
    • 拥有cmb,另一种似乎是all(cmb %in% l2)
    猜你喜欢
    • 2022-12-05
    • 1970-01-01
    • 2017-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-04
    • 1970-01-01
    相关资源
    最近更新 更多