次の行列があるとします。
> mat <- matrix(c( rep(1:12,1)), 4, 4)
> mat
[,1] [,2] [,3] [,4]
[1,] 1 5 9 1
[2,] 2 6 10 2
[3,] 3 7 11 3
[4,] 4 8 12 4
囲まれた要素の平均を使用して、中央の 4 つの値を置き換えたい。私はそれを使用してそれを行うことができます:
for (i in 1:1000){
mat[2,2]= (mat[1,2] + mat[2,1] + mat[3,2] + mat[2,3])/4
mat[2,3]= (mat[2,2] + mat[2,4] + mat[1,3] + mat[3,3])/4
mat[3,2]= (mat[3,1] + mat[3,3] + mat[2,2] + mat[4,2])/4
mat[3,3]= (mat[3,2] + mat[3,4] + mat[4,3] + mat[2,3])/4
print(mat)
}
私の質問は次のとおりです。これを関数に変換して、選択した行列要素 (つまりmat[2:3,2:3]
) に直接適用できるようにするにはどうすればよいですか?