2013-11-20 31 views
1

我在R中有一个3d数组,例如维数是500 * 3 * 5,称之为数据。所以有5片矩阵,每片有500行和3列。现在我想创建一个垂直叠加5个切片的新矩阵。因此输出具有500 * 5行5列和它看起来像这样:如何将列组堆叠到一个新的矩阵中?

[dim1] [ dim3 ]  [1]  [2]  [3]  

1   1   data  data  data 
1   2   data  data  data 
1   3   data  data  data 
1   4   data  data  data 
1   5   data  data  data 
2 
2 
2 
.. 
500   1   data  data  data 
500   2   data  data  data 
500   3   data  data  data 
500   4   data  data  data 
500   5   data  data  data 

因此,对于每500行,重复第二和原始数组的第三尺寸,使得列1重复原始行索引,第2列重复旧的z维索引,第3-5列是3列数据(数字并且缺失值)。我在这里使用了数字5,在我的数据中数字更大,所以我需要能够更一般地做到这一点。谢谢!!!

回答

1

a是你的3D阵列,你可以这样做:

n <- dim(a) 
b <- aperm(a, c(3,1,2)) 
dim(b) <- c(n[3] * n[1], n[2]) 

如果你想昏暗的指标添加到左侧,你可以这样做:

b <- cbind(rev(expand.grid(dim3 = 1:n[3], dim1 = 1:n[1])), b) 
+0

太感谢你了! – user511792

相关问题