将一个向量分成多个块

27 浏览
0 Comments

将一个向量分成多个块

我需要在 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日
0
0 Comments
chunk2 <- function(x,n) split(x, cut(seq_along(x), n, labels = FALSE)) 

(翻译:123)

0
0 Comments

在一行中将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

0