【问题标题】:R: Average pairs of columns in a matrixR:矩阵中的平均列对
【发布时间】:2015-05-12 08:34:51
【问题描述】:

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

【问题讨论】:

    标签: r matrix average


    【解决方案1】:

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

    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
    

    【讨论】:

    • (m[,c(TRUE, FALSE)] + m[,c(FALSE, TRUE)])/2怎么样
    • @David Arenburg 谢谢,但我收到一条错误消息:“闭包”类型的对象不是子集。你知道问题是什么吗?我是这样做的 tis (df[c(TRUE,FALSE)]+df[c(FALSE,TRUE)]/2)
    • @Nemo 应该是(df[c(TRUE, FALSE)] + df[c(FALSE, TRUE)])/2
    • @David Arenburg 非常感谢,现在我发现它工作得很好!再次感谢男人
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-27
    • 2014-03-15
    • 2018-08-23
    • 1970-01-01
    • 2013-01-04
    • 1970-01-01
    相关资源
    最近更新 更多