R如何使用另一个列表来对列表进行子集化

时间:2017-08-24 02:29:02

标签: r list subset

我有两个列表,我想使用listB对listA进行子集化。 假设我有listA和ListB,我想要listC。

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

我感谢任何帮助!

1 个答案:

答案 0 :(得分: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