2016-09-24 100 views
2

我有一個包含值,級別,ID,顏色值,實際值,A,B,更改,名稱和父級的列表。我只想在「level」= 2時將「value」大於1000的子集。它應該只爲2級子集,列表中有2,3,4個級別。實際上,數據是具有層次結構的數據樹的格式,層次就像從2,3,4開始的層。所以,我真正想要達到的是,對於第2級而言,只應根據條件過濾值,其他級別應保持相同。所以最後我應該讓2,3,4和2級的所有數據的值都大於1000。如何基於R中的多個條件對列表進行子集劃分?

列表:

[[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

我們可以使用lapply來循環訪問list並根據OP帖子中的條件過濾list元素。

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

感謝您的解決方案。這是篩選,並給我列出「價值」只在第2級。我無法獲得其他元素(actualvalue,A,B ...),我也想從其他「水平」(3,4 )。 – user6559913

+0

@ user6559913這是根據你的描述'我想子集「的價值」大於1000在「水平」= 2 only'。您對「我想從其他級別獲取數據」級別的評論「(3,4)'也是根據您的描述進行合作 – akrun

+0

@ user6559913是的,如果您在帖子中顯示期望的輸出和dput的可重現示例。在你的例子中,只有4級,我不知道你想要什麼 – akrun

相關問題