gpt4 book ai didi

按行 reshape 矩阵

转载 作者:行者123 更新时间:2023-12-04 11:09:38 25 4
gpt4 key购买 nike

我有一个大小为 18000 x 54 的矩阵。我想将它 reshape 为一个大小为 54000 x 18 的矩阵,其中我的初始矩阵的每一行都变成一个有 3 行的矩阵。

让我们举个例子。我有一个矩阵如下:

a = matrix(1:18, nrow = 2, ncol = 9, byrow = T)
a
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
1 2 3 4 5 6 7 8 9
10 11 12 13 14 15 16 17 18

我想 reshape 这个矩阵,使其成为:
[,1]  [,2]  [,3]    
1 4 7
2 5 8
3 6 9
10 13 16
11 14 17
12 15 18

我尝试了以下两种方法,但它们不起作用。第一个如下:
dim(a) = c(6,3)

第二个是创建一个函数,然后应用到每一行:
reshapeX = function(x){
dim(x) = c(3,as.integer(length(x)/3))
return(as.matrix(x))
}
rbind(apply(a, 1, reshapeX))

但它也不起作用。有人可以帮忙吗?

最佳答案

你可以做:

do.call(rbind, lapply(1:nrow(a), function(i) matrix(a[i, ], nrow=3)))

使用您的数据:
a <- matrix(1:18, nrow = 2, ncol = 9, byrow = TRUE)
do.call(rbind, lapply(1:nrow(a), function(i) matrix(a[i, ], nrow=3)))
# [,1] [,2] [,3]
# [1,] 1 4 7
# [2,] 2 5 8
# [3,] 3 6 9
# [4,] 10 13 16
# [5,] 11 14 17
# [6,] 12 15 18

关于按行 reshape 矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56748699/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com