2013-11-20 32 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

相關問題