【问题标题】:R: How do I filter a named list on names present in a vector?R:如何根据向量中存在的名称过滤命名列表?
【发布时间】:2021-12-29 11:35:20
【问题描述】:

我正在尝试根据另一个列表中存在的元素获取命名列表的子集。

nammedlist<-list( "a"=c(1,2,3,4), "b"=c(2,4,5), "c"=c(9,5,3,2))

selection<-c("a","c")

想要的输出:

namedlist2<-list( "a"=c(1,2,3,4), "c"=c(9,5,3,2))


我正在考虑编写一个 for 循环检查每个名称是否存在,然后提取它。但他们必须是一种更清洁的方式来做到这一点。

【问题讨论】:

    标签: r list subset


    【解决方案1】:

    您可以将名称用作索引:

    nammedlist[selection]
    

    会给你你想要的。

    请注意,您使用的是单括号,而不是双括号。单括号表示您想要列表的子集。双括号表示你想从列表中提取一个元素。

    【讨论】:

    • 可以添加intersect() 用于“检查每个名称是否存在” nammedlist[intersect(names(nammedlist), selection)]
    • @sindri_baldur: 是的,如果selection 包含一个未找到的名称,如果您使用我的代码,您会在结果中得到一个名为NA 的丑陋条目,因此使用intersect() 会是个好主意。
    猜你喜欢
    • 2022-10-15
    • 2021-10-19
    • 1970-01-01
    • 2020-02-04
    • 1970-01-01
    • 2018-12-21
    • 1970-01-01
    • 1970-01-01
    • 2022-01-07
    相关资源
    最近更新 更多