2016-09-22 98 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矩阵工作,你能想到的它是一个逐列存储数据的向量。因此,从矩阵中按行提取数据并不像按列提取那样直接,而实质上数据是如何存储的。在转置第一个矩阵之后,数据将以您想要提取的顺序进行存储,然后按行填充第二个矩阵将是直接的。