R:如何根据向量中存在的名称过滤命名列表?

Posted

技术标签:

【中文标题】R:如何根据向量中存在的名称过滤命名列表?【英文标题】:R: How do I filter a named list on names present in a vector? 【发布时间】: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 循环检查每个名称是否存在,然后提取它。但他们必须是一种更清洁的方式来做到这一点。

【问题讨论】:

【参考方案1】:

您可以将名称用作索引:

nammedlist[selection]

会给你你想要的。

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

【讨论】:

可以添加intersect() 用于“检查每个名称是否存在” nammedlist[intersect(names(nammedlist), selection)] @sindri_baldur: 是的,如果selection 包含一个未找到的名称,如果您使用我的代码,您会在结果中得到一个名为NA 的丑陋条目,因此使用intersect() 会是个好主意。

以上是关于R:如何根据向量中存在的名称过滤命名列表?的主要内容,如果未能解决你的问题,请参考以下文章

如何根据具有名称类型的变量在 R 中过滤和计数

Python 根据另一个列表中不存在的值过滤一个列表

MS Access 2013 - 根据文本框中的值过滤列表框中的值

从 R 中的列表中过滤值

在 R dplyr 中过滤具有多个条件名称匹配的数据框

r 根据列表过滤列