我有一个包含值,级别,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"
有没有办法实现这个目标?
答案 0 :(得分:1)
我们可以使用lapply
遍历list
并根据OP帖子中的条件过滤list
个元素。
lapply(lst, function(x) x[(x[["value"]] > 1000 & x[["level"]]==2)|x[["level"]]!=2])