如何将函数应用于考虑相邻单元的矩阵的每个元素

时间:2017-01-19 20:52:43

标签: r

我想将一个函数应用于矩阵的每个元素,考虑上,下,左和右相邻单元格:

a=1; b=3; c=8; d=2

m <- matrix(1:20, nrow=4, ncol=5)
mn <- matrix(NA, nrow=4, ncol=5)

for(i in 2:3){
  for(j in 2:4){
    mn[i,j] <- a*m[i-1,j]+b*m[i+1,j]+c*m[i,j-1]+d*m[i,j+1]
  }
}

是否有使用sapply或其他方式的替代方法?

1 个答案:

答案 0 :(得分:0)

您可以对矩阵的多个行和列进行子集,如下所示:

.i = 2:3
.j = 2:4

mn[.i,.j] = a*m[.i-1,.j] + b*m[.i+1,.j] + c*m[.i,.j-1] + d*m[.i,.j+1]


> mn
#      [,1] [,2] [,3] [,4] [,5]
# [1,]   NA   NA   NA   NA   NA
# [2,]   NA   62  118  174   NA
# [3,]   NA   76  132  188   NA
# [4,]   NA   NA   NA   NA   NA