通过块将向量转换为矩阵 -reshape

问题描述 投票:0回答:1

只是一个简单的问题 我在 R 中努力将数字列表转换为具有固定行数的矩阵 并且数字一次放置在三元组(3 行块)中 元素是数字,但我只会显示我想要放置它们的位置。

例如3排

1 2 3 10 11 12
4 5 6 13 14 15
7 8 9 16 17 18

4行

1 2 3 13 14 15
4 5 6 16 17 18
7 8 9 19 20 21
10 11 12 22 23 24

3行:

1 2 3 10 11 12 19 20 21 28 29 30
4 5 6 13 14 15 22 23 24 31 32 33
7 8 9 16 17 18 25 26 27 34 35 36

谢谢!

尝试了很多不同的方式和套餐但没有运气

r matrix vector reshape block
1个回答
0
投票

你可以试试这个。

> fn <- \(x, n) {
+   sq <- seq_len(ceiling(length(x)/n^2)) - 1L
+   lapply(sq, \(i)
+          matrix(x[seq_len(n*3) + i*n*3], nrow=n, ncol=3, byrow=TRUE)
+   ) |> 
+     do.call(w='cbind')
+ }
> fn(1:18, 3)
     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]    1    2    3   10   11   12
[2,]    4    5    6   13   14   15
[3,]    7    8    9   16   17   18
> fn(1:24, 4)
     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]    1    2    3   13   14   15
[2,]    4    5    6   16   17   18
[3,]    7    8    9   19   20   21
[4,]   10   11   12   22   23   24
> fn(1:36, 3)
     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12]
[1,]    1    2    3   10   11   12   19   20   21    28    29    30
[2,]    4    5    6   13   14   15   22   23   24    31    32    33
[3,]    7    8    9   16   17   18   25   26   27    34    35    36
© www.soinside.com 2019 - 2024. All rights reserved.