2017-08-24 93 views
2

我有兩個列表,我想通過使用listB子集listA。 假設我有listA和ListB,我想要listC。R如何子集列表使用另一個列表

listA <- list(a = data.frame(x = 1:5, y = 6:10), 
      b = data.frame(x = 4:8, y = 7:11)) 

> listA 
$a 
    x y 
1 1 6 
2 2 7 
3 3 8 
4 4 9 
5 5 10 
$b 
    x y 
1 4 7 
2 5 8 
3 6 9 
4 7 10 
5 8 11 

listB <- list(a = c(3,5), b = c(4, 7)) 

我想listC應該是:

> listC 
$a 
    x y 
3 3 8 
4 4 9 
5 5 10 
$b 
    x y 
1 4 7 
2 5 8 
3 6 9 
4 7 10 

我明白任何幫助!

+2

這將是明智的標記與您所使用的編程語言,你的問題。 – alfasin

+0

製作'listC'的規則是什麼? – mt1022

+0

「listB」給出listA的索引的規則是什麼? – lebelinoz

回答

3

這聽起來像你需要使用mapply。試試這個:

fun <- function(df, sq) df[df$x %in% seq(sq[1], sq[2]), ] 
listC <- mapply(fun, listA, listB, SIMPLIFY = FALSE) 
listC 

這給

> listC 
$a 
    x y 
3 3 8 
4 4 9 
5 5 10 

$b 
    x y 
1 4 7 
2 5 8 
3 6 9 
4 7 10 
+0

非常感謝!拯救我的一天! @Shaun Wilkinson – datanew

相關問題