我有以下格式的矩阵a
:
> a
[,1] [,2]
[1,] 1 2
[2,] 1 2
[3,] 1 2
[4,] 3 4
[5,] 3 4
[6,] 3 4
我想得到以下结果:
> aprime
[,1] [,2] [,3]
[1,] 1 1 1
[2,] 2 2 2
[3,] 3 3 3
[4,] 4 4 4
这是一种方法:
aprime <- matrix(0, 4, 3)
aprime[1:2, ] <- t(a[1:3, ])
aprime[3:4, ] <- t(a[4:6, ])
然而,这很慢,我需要在非常大的矩阵上多次执行此操作。另一种方法:
aprime <- matrix(t(a), 4, 3)
但是会产生
> aprime
[,1] [,2] [,3]
[1,] 1 1 3
[2,] 2 2 4
[3,] 1 3 3
[4,] 2 4 4
最后 t(矩阵(a,3,4))
产生
> aprime
[,1] [,2] [,3]
[1,] 1 1 1
[2,] 3 3 3
[3,] 2 2 2
[4,] 4 4 4
有什么想法吗?
答案 0 :(得分:1)
转换为3维数组,置换尺寸并重新整形为矩阵:
matrix(aperm(array(a, c(3, 2, 2)), 3:1), 4)
,并提供:
[,1] [,2] [,3]
[1,] 1 1 1
[2,] 2 2 2
[3,] 3 3 3
[4,] 4 4 4
注意: a
的可重现形式为:
a <- matrix(c(1, 1, 1, 3, 3, 3, 2, 2, 2, 4, 4, 4), 6)