提高R中矩阵变换的性能

时间:2015-07-21 10:33:01

标签: r matrix transformation

我对快速矩阵变换有一点问题。这种转变必须进行很多次,所以我正在寻找一种快速的方法。想象一下给定的矩阵A和一个整数参数L。矩阵A应转换为包含newA行和L列的新矩阵nrow(A)*ncol(A)/L。我采用LA并希望将它们转换为列。这个问题的两个可能解决方案的一个小例子newA1newA2其中newA1 = newA2应该澄清我的解释:

A = matrix(1:24,6,4,byrow=T)  #example matrix
L = 2  #number of rows for new matrix
newA1 = NULL
newA2 = matrix(0,L,nrow(A)*ncol(A)/L)
for(i in 1:(nrow(A)/L)){
 newA1 = cbind(newA1,A[((i-1)*L+1):(i*L),])      #slower than newA2
 newA2[1:L,((i-1)*ncol(A)+1):(i*ncol(A))] = A[((i-1)*L+1):(i*L),]  #faster than newA1
}

矩阵看起来像这样:

> A
       [,1] [,2] [,3] [,4]
  [1,]    1    2    3    4
  [2,]    5    6    7    8
  [3,]    9   10   11   12
  [4,]   13   14   15   16
  [5,]   17   18   19   20
  [6,]   21   22   23   24
> newA1
       [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12]
  [1,]    1    2    3    4    9   10   11   12   17    18    19    20
  [2,]    5    6    7    8   13   14   15   16   21    22    23    24

L=3也适用于此示例。

0 个答案:

没有答案