如何根据R中的多个条件对列表进行子集?

时间:2016-09-24 07:50:43

标签: r subset

我有一个包含值,级别,ID,颜色值,实际值,A,B,更改,名称和父级的列表。我想要分组"价值"大于1000"水平"仅限= 2。它应仅为2级子集,列表中有2,3,4级别。实际上,数据是具有层次结构的数据树的格式,级别就像从2,3,4开始的层。所以,我实际想要达到的目标是,对于第2级,只应根据条件过滤该值,其他级别应保持相同。所以最后我应该得到2,3,4级和2级的所有数据,其值>仅1000。

列表:

    [[1]]
[[1]]$value
[1] 19.48275

[[1]]$level
[1] 4

[[1]]$id
[1] "10"

[[1]]$colorValue
[1] 4244.56

[[1]]$actualvalue
[1] 4244.56

[[1]]$A
[1] 21786.25

[[1]]$B
[1] 17541.69

[[1]]$change
[1] 19.48275

[[1]]$name
[1] "HFSS"

[[1]]$parent
[1] "7"


[[2]]
[[2]]$value
[1] Inf

[[2]]$level
[1] 4

[[2]]$id
[1] "100"

有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:1)

我们可以使用lapply遍历list并根据OP帖子中的条件过滤list个元素。

lapply(lst, function(x) x[(x[["value"]] > 1000 & x[["level"]]==2)|x[["level"]]!=2])