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

如何根据R中的多个条件子集列表?,r,subset,R,Subset,我有一个包含值、级别、id、颜色值、实际值、a、B、更改、名称和父级的列表。我只想在“级别”=2时将大于1000的“值”子集。它应该只为2级子集,列表中有2、3、4级。实际上,数据是以具有层次结构的数据树的形式存在的,这些层次类似于从2、3、4开始的层。所以,我真正想要实现的是,对于级别2,只有值应该根据条件进行过滤,其他级别应该保持不变。最后,我应该有来自2级、3级、4级和2级的所有数据,其值仅大于1000 名单: [[1]] [[1]]$value [1] 19.48275 [[1

我有一个包含值、级别、id、颜色值、实际值、a、B、更改、名称和父级的列表。我只想在“级别”=2时将大于1000的“值”子集。它应该只为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"

有什么可能的方法来实现这一点吗?

我们可以使用
lappy
循环查看
列表
,并根据OP帖子中的条件过滤
列表
元素

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

谢谢你的解决方案。这是过滤和给我的“值”只有在第2级列表。我无法获取其他元素(actualvalue,A,B…),而且我希望获得来自其他“级别”(3,4)的数据。@user6559913它基于您的描述
我希望在“级别”=2时将大于1000的“值”子集。您关于
我想获得其他级别的数据“级别”(3,4)
的评论也基于您的description@user6559913是的,如果您在帖子中显示预期输出和dput的可复制示例。在你的例子中,只有级别4,我不知道你到底想要什么实际上,数据是以数据树的形式存在层次结构,级别就像从2,3,4开始的层。所以,我真正想要实现的是,对于级别2,只有值应该根据条件进行过滤,其他级别应该保持不变。因此,最后我应该拥有来自级别2、3、4和级别2的所有数据,这些数据的值仅大于1000。@user6559913
最后,我应该拥有来自级别2、3、4和级别2的所有数据,这些数据的值仅大于1000。
对于您来说,可能更容易描述,因为数据就在您面前,但对于我来说,这并不完全清楚。我对
level2仅具有值>1000的列表元素感到困惑
您的意思是,对于那些具有
level2
的列表元素,您只想子集那些值>1000的元素,而另一个级别的列表应该保留吗?