R - 在大型矩阵中交换多个列,预定距离介于

时间:2017-11-02 21:04:37

标签: r matrix

我需要在预定距离的矩阵中交换多个列和后面的行。例如,假设我有一个9x9矩阵。我需要能够同时交换cols 1和2,4和5,7和8。 我想在不使用concatenate函数的情况下执行此操作。此外,需要该方法对I x J大小的矩阵有效。

我不能为我的生活弄清楚如何自动执行此程序。

1 个答案:

答案 0 :(得分:0)

您可以使用[ - 索引

交换所需的列
M <- matrix(1:81,9,9)
Mswapped <- M[ , c(2,1,3,5,4,6,8,79) ]
Mswapped

通过“相隔预定距离”并不完全确定你所指的是什么。如果你想按照上面的说明进行右 - 左 - 稳定序列,但是以编程方式,然后创建一个“交换向量”(1为右移,-1为左移,0为保持相同)并添加到序列,因此取决于R的回收功能:

M[ , 1:dim(M)[2] + c(1,-1,0)]
      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
 [1,]   10    1   19   37   28   46   64   55   73
 [2,]   11    2   20   38   29   47   65   56   74
 [3,]   12    3   21   39   30   48   66   57   75
 [4,]   13    4   22   40   31   49   67   58   76
 [5,]   14    5   23   41   32   50   68   59   77
 [6,]   15    6   24   42   33   51   69   60   78
 [7,]   16    7   25   43   34   52   70   61   79
 [8,]   17    8   26   44   35   53   71   62   80
 [9,]   18    9   27   45   36   54   72   63   81