【发布时间】:2017-08-07 20:14:01
【问题描述】:
这是我的清单的一个例子:
df1 = data.frame(a = c(1,1,1,2,3,3,4,4,5,6,6,7,8,9,9,10))
df2 = data.frame(a = c(1,2,2,2,3,4,5,5,6,6,7,8,9,9,10,10,11))
lst = list(df1, df2)
lst = lapply(lst, function(z) {z$id = seq.int(nrow(z)); return(z)})
现在我需要根据逻辑条件对每个 data.frame 进行子集化,即我想获得两个 data.frame,其中 id > 8 用于 df1 和 id > 12 用于 df2。
num_vec = c(8, 12)
这是我的预期结果:
> lst
[[1]]
a id
5 9
6 10
6 11
7 12
8 13
9 14
9 15
10 16
[[2]]
a id
9 13
9 14
10 15
10 16
11 17
使用单个 data.frame 的语法是:
df1$id = seq.int(nrow(df1))
df2$id = seq.int(nrow(df2))
df1_sub = subset(df1, id > 8)
df2_sub = subset(df2, id > 12)
谢谢
【问题讨论】:
-
一个选项与@987654327@
lst %>% map2(num_vec, ~ .x[.x$id > .y,])