2016-09-22 96 views
0

我有一個包含2列的矩陣,我想將它轉換爲具有指定尺寸的矩陣。將矩陣轉換爲具有指定尺寸的另一個矩陣

> t <- matrix(rnorm(20), ncol=2, nrow=10) 
     [,1]  [,2] 
[1,] 1.4938530 1.2493088 
[2,] -0.8079445 1.8715868 
[3,] 0.5775695 -0.9277420 
[4,] 0.4415969 2.6357908 
[5,] 0.3209226 -1.1306049 
[6,] 0.5109251 -0.8661100 
[7,] 1.9495571 0.2092941 
[8,] 0.7816373 1.1517466 
[9,] 0.0300595 -0.1351532 
[10,] 0.7550894 0.7778869 

我希望做的是一樣的東西:

> tt <- matrix(t, ncol=4, nrow=5) 
     [,1]  [,2]  [3,]  [4,] 
[1,] 1.4938530 1.2493088 -0.8079445 1.8715868 
[2,] 0.5775695 -0.9277420 0.4415969 2.6357908 
[3,] etc. 

我試圖做的事情,但模我的頭傷得太深,我去嘗試,即使多一分鐘。

回答

3

可以移調你的第一個矩陣,使數據存儲在你想要的順序,然後按行填寫第二矩陣:

tt <- matrix(t(t), ncol=4, nrow=5, byrow = T) 

t 
#    [,1]  [,2] 
# [1,] -1.4162465950 0.01532476 
# [2,] -0.2366332875 -0.04024386 
# [3,] 0.5146631983 -0.34720239 
# [4,] 1.9243922633 -0.24016160 
# [5,] 1.6161165230 0.63187438 
# [6,] -0.3558181508 -0.73199138 
# [7,] 0.7459405376 0.01934826 
# [8,] -1.0428581093 -2.04422042 
# [9,] 0.0003166344 0.98973993 
#[10,] 0.6390745275 -0.65584930 

tt 
#    [,1]  [,2]  [,3]  [,4] 
# [1,] -1.4162465950 0.01532476 -0.2366333 -0.04024386 
# [2,] 0.5146631983 -0.34720239 1.9243923 -0.24016160 
# [3,] 1.6161165230 0.63187438 -0.3558182 -0.73199138 
# [4,] 0.7459405376 0.01934826 -1.0428581 -2.04422042 
# [5,] 0.0003166344 0.98973993 0.6390745 -0.65584930 

當你用R矩陣工作,你能想到的它是一個逐列存儲數據的向量。因此,從矩陣中按行提取數據並不像按列提取那樣直接,而實質上數據是如何存儲的。在轉置第一個矩陣之後,數據將以您想要提取的順序進行存儲,然後按行填充第二個矩陣將是直接的。