我需要在预定距离的矩阵中交换多个列和后面的行。例如,假设我有一个9x9矩阵。我需要能够同时交换cols 1和2,4和5,7和8。
我想在不使用concatenate
函数的情况下执行此操作。此外,需要该方法对I x J大小的矩阵有效。
我不能为我的生活弄清楚如何自动执行此程序。
答案 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