假设我有这个矩阵:
> 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]
)?