繁体   English   中英

将矩阵转换为R中的数组

[英]Transform matrix to array in R

我有一个矩阵: mat <- matrix(c(1:100), ncol = 10) 2,10,5 mat <- matrix(c(1:100), ncol = 10)我想将其重塑为尺寸数组: 2,10,5如下:

, , 1
 [1,]    1   11   21   31   41   51   61   71   81    91
 [2,]    2   12   22   32   42   52   62   72   82    92
, , 2
 [1,]    3   13   23   33   43   53   63   73   83    93
 [2,]    4   14   24   34   44   54   64   74   84    94
, , 3
 [1,]   5   15   25   35   45   55   65   75   85    95
 [2,]     6   16   26   36   46   56   66   76   86    96
, , 4
 [1,]    7   17   27   37   47   57   67   77   87    97
 [2,]    8   18   28   38   48   58   68   78   88    98
, , 5
 [1,]    9   19   29   39   49   59   69   79   89    99
 [2,]    10   20   30   40   50   60   70   80   90   100

您可以通过按行切割mat然后将其重建为矩阵来完成。 这里

lvl <- (nrow(mat)/2)
array(unlist(by(mat, INDICES = rep(1:lvl, each = 2), FUN = function(x) x)),
      dim = c(2, ncol(mat), lvl))

, , 1

     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,]    1   11   21   31   41   51   61   71   81    91
[2,]    2   12   22   32   42   52   62   72   82    92

, , 2

     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,]    3   13   23   33   43   53   63   73   83    93
[2,]    4   14   24   34   44   54   64   74   84    94

, , 3

     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,]    5   15   25   35   45   55   65   75   85    95
[2,]    6   16   26   36   46   56   66   76   86    96

, , 4

     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,]    7   17   27   37   47   57   67   77   87    97
[2,]    8   18   28   38   48   58   68   78   88    98

, , 5

     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,]    9   19   29   39   49   59   69   79   89    99
[2,]   10   20   30   40   50   60   70   80   90   100

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM