R:矩阵中的平均列对

时间:2015-05-12 08:34:52

标签: r matrix average

我有一个由许多列组成的大矩阵。我希望得到一个新的矩阵,它具有相同的行数和列数的一半,通过平均每个附近的2列(例如,列1表示2,列3表示4等)。 现在我正在使用for循环,但我想知道是否有更聪明的方法来实现这一点。

1 个答案:

答案 0 :(得分:3)

这是一个矢量化解决方案:

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