2017-11-02 5 views
0

複数の列とそれ以降の列を所定の距離離れた行列に入れ替える必要があります。たとえば、9x9の行列があるとします。私は列1と2、4と5、7と8を同時に入れ替えることができる必要があります。 concatenate機能を使用せずにこれを行うには遠慮しています。また、I x Jサイズの行列に対して有効なメソッドが必要です。R - ラージマトリックスの複数の列を所定の間隔でスワップする

私の人生では、この手順を自動化する方法を理解できません。

+0

使用している言語/環境は?あなたの答えで投稿のタグを編集してください。 – antiduh

+0

申し訳ありません。 –

+0

単一の列をスワップする方法を知っていますか?たとえば、https://www.r-bloggers.com/r-tips-swapping-columns-in-a-matrix/。ループを使用して複数の列を交換する方法を知っていますか? – antiduh

答えて

0

あなただけ

M <- matrix(1:81,9,9) 
Mswapped <- M[ , c(2,1,3,5,4,6,8,79) ] 
Mswapped 

ないあなたが「所定間隔」でを参照しているものを完全に確認を-indexing [で必要な列を入れ替えることができます。上の図のように右安定度のシーケンスを実行したいが、プログラムでスワップベクトルを作成したい場合は、スワップベクトルを作成する(右に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 
関連する問題