【发布时间】:2017-12-13 22:38:03
【问题描述】:
我想使用purrr 来对列表中的元素进行子集化
u <- list(a=1:10, b=1:10)
使用maxCol 作为从 1 开始的索引向量的上限。例如,假设
maxCol <- c(6L, 3L)
那么输出应该是这样的
$a
[1] 1 2 3 4 5 6
$b
[1] 1 2 3
实际上,我想保留a 中从位置1 到位置6 的所有值,以及b 中从位置1 到3 的所有值。
我知道如何使用循环,但我想使用 purrr 。例如,我认为这样的事情会起作用,但它没有:
map2(u, maxRow, u[1:maxCol])
【问题讨论】:
-
保持你的语法,你可以使用
map2(u, maxCol, ~.x[1:.y]),但这似乎比简单地使用head更复杂。 -
@ThomasK 谢谢,一旦@ChiPak 回答,我也想出了同样的想法。它实际上对我来说看起来更容易,因为我完全忘记了
head()中的论点n,如果我不想从 1 开始,它也更通用(因此我敢说优越)