2017-11-16 24 views
1

私は全体的にプログラミングとコーディングを始めたばかりで、統計情報の一部として現在学校でRを学習中です。対角行列の値を特定の値に置き換えるR

「マット」と呼ばれる10×10のマトリックスを作成するように求められました。このマトリックスには、対角線上の数字1と斜めにない数字の0が含まれています。

私は、以下のものを使用して、これを行っている

mat<-diag(10) 
mat 
    [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] 
    [1,] 1 0 0 0 0 0 0 0 0  0 
    [2,] 0 1 0 0 0 0 0 0 0  0 
    [3,] 0 0 1 0 0 0 0 0 0  0 
    [4,] 0 0 0 1 0 0 0 0 0  0 
    [5,] 0 0 0 0 1 0 0 0 0  0 
    [6,] 0 0 0 0 0 1 0 0 0  0 
    [7,] 0 0 0 0 0 0 1 0 0  0 
    [8,] 0 0 0 0 0 0 0 1 0  0 
    [9,] 0 0 0 0 0 0 0 0 1  0 
    [10,] 0 0 0 0 0 0 0 0 0  1 

その後、私はまた、K = 3とが、このアイデンティティの構造を持つ行列のakxkブロックを仕切ると行うことがありますどのように多くの方法を説明するよう求められていますこの。私は推測

mat2<-mat[c(1,2,3),c(1,2,3)] 
mat2 
      [,1] [,2] [,3] 
    [1,] 1 0 0 
    [2,] 0 1 0 
    [3,] 0 0 1 

をこれまでのところは良い:

私はこの次の操作を実行を行う方法を考え出しましたか?

  [,1] [,2] [,3] 
    [1,] 1 .5 .25 
    [2,] .5 1 .5 
    [3,] .25 .5  1 

:しかし、今私は本当にこだわっている、私は今、このようなマトリックスとマット(MAT2)のブロック対角部分を交換するように求めていますMAT2で、どのように次のように取り掛かるには考えています私の教授はまた、外側の関数を使うとこれをより簡単にすることができますが、どうすればこのことができるかわからないので、upper.tri関数とlower.tri関数を使ってみましたが、どちらも成功しませんでした。

私は非常に助けていただければ幸いです。前もって感謝します!あなたは準備ができて交換用の行列を使用している場合

+0

再渡って行うためにループのためにそれを入れる「どのように多くの方法?」別の方法は、例えば 'mat [2:4,2:4]'です。 "replace"は関連するドキュメントを見ているかもしれません、 'help.search(" replace "、package =" base ")' – Frank

答えて

1

mat<-diag(10) 
replacement <- matrix(c(1,.5,.25,.5,1,.5,.25,.5,1), nrow=3, byrow=T) 
mat[c(1,2,3),c(1,2,3)] <- replacement 

は全体の対角

for(idx in 1:8){ 
    mat[c(idx,idx+1,idx+2),c(idx,idx+1,idx+2)] <- replacement 
} 
mat 
     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] 
[1,] 1.00 0.50 0.25 0.00 0.00 0.00 0.00 0.00 0.00 0.00 
[2,] 0.50 1.00 0.50 0.25 0.00 0.00 0.00 0.00 0.00 0.00 
[3,] 0.25 0.50 1.00 0.50 0.25 0.00 0.00 0.00 0.00 0.00 
[4,] 0.00 0.25 0.50 1.00 0.50 0.25 0.00 0.00 0.00 0.00 
[5,] 0.00 0.00 0.25 0.50 1.00 0.50 0.25 0.00 0.00 0.00 
[6,] 0.00 0.00 0.00 0.25 0.50 1.00 0.50 0.25 0.00 0.00 
[7,] 0.00 0.00 0.00 0.00 0.25 0.50 1.00 0.50 0.25 0.00 
[8,] 0.00 0.00 0.00 0.00 0.00 0.25 0.50 1.00 0.50 0.25 
[9,] 0.00 0.00 0.00 0.00 0.00 0.00 0.25 0.50 1.00 0.50 
[10,] 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.25 0.50 1.00 
関連する問題