将一个向量分成多个块
将一个向量分成多个块
我需要在 R 中将一个向量均分成 n 个相等大小的块。我找不到任何基本函数可以做到这一点。而且 Google 也没有帮到我。这是我目前想出来的方法;
x <- 1:10 n <- 3 chunk <- function(x,n) split(x, factor(sort(rank(x)%%n))) chunk(x,n) $`0` [1] 1 2 3 $`1` [1] 4 5 6 7 $`2` [1] 8 9 10
admin 更改状态以发布 2023年5月24日
在一行中将d分成大小为20的块:\n
split(d, ceiling(seq_along(d)/20))
\n更多细节:我认为你所需要的只是seq_along()
、split()
和ceiling()
: \n
> d <- rpois(73,5) > d [1] 3 1 11 4 1 2 3 2 4 10 10 2 7 4 6 6 2 1 1 2 3 8 3 10 7 4 [27] 3 4 4 1 1 7 2 4 6 0 5 7 4 6 8 4 7 12 4 6 8 4 2 7 6 5 [53] 4 5 4 5 5 8 7 7 7 6 2 4 3 3 8 11 6 6 1 8 4 > max <- 20 > x <- seq_along(d) > d1 <- split(d, ceiling(x/max)) > d1 $`1` [1] 3 1 11 4 1 2 3 2 4 10 10 2 7 4 6 6 2 1 1 2 $`2` [1] 3 8 3 10 7 4 3 4 4 1 1 7 2 4 6 0 5 7 4 6 $`3` [1] 8 4 7 12 4 6 8 4 2 7 6 5 4 5 4 5 5 8 7 7 $`4` [1] 7 6 2 4 3 3 8 11 6 6 1 8 4