首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在R中的多级列表中裁剪特定元素?

如何在R中的多级列表中裁剪特定元素?
EN

Stack Overflow用户
提问于 2013-10-29 14:33:02
回答 2查看 209关注 0票数 0

有谁知道在R中裁剪多级列表的方法吗?对于列表中的每个元素,我有几个级别(例如属性“活着”、“年龄”、“颜色”)。我想将列表裁剪为只包含元素,例如x$color=="blue"

示例

代码语言:javascript
复制
set.seed(1)
ind <- vector(mode="list", 20)
for(i in seq(ind)){
    ind[[i]]$alive <- 1
    ind[[i]]$age <- 0
    ind[[i]]$color <- c("blue", "red")[round(runif(1)+1)]
}

keep <- which(sapply(ind, function(x) x$color) == "blue")
keep
#[1]  1  2  5 10 11 12 14 16 19

ind[[keep]] # doesn't work
#Error in ind[[keep]] : recursive indexing failed at level 

裁剪(或设置为NULL )对于具有单个级别的列表似乎是可能的,如下面的answer所示,但对我的多级列表不起作用。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-29 14:46:41

ind[keep]是你要找的东西。

来自?'[['

The most important distinction between ‘[’, ‘[[’ and ‘$’ is that the ‘[’ can select more than one element whereas the other two select a single element.

票数 2
EN

Stack Overflow用户

发布于 2013-10-29 14:49:48

或者,您可以使用Filter,并删除which步骤。

代码语言:javascript
复制
Filter(function(x) x$color == 'blue', ind)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19661149

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档