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:如何根据向量中存在的名称过滤命名列表?的主要内容,如果未能解决你的问题,请参考以下文章