我有两个列表,我想使用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
我感谢任何帮助!
答案 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