给定一个矩阵,我想找到每个元素的邻居之和(所以结果是一个矩阵)。邻居是给定元素上方、下方和旁边的值,如果它们存在(不考虑对角元素)。
例子:
> z = matrix(1:9, 3, 3, byrow=T)
> z
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 6
[3,] 7 8 9
预期的结果是:
> result
[,1] [,2] [,3]
[1,] 6 9 8
[2,] 13 20 17
[3,] 12 21 14
在不使用循环的情况下,我可以在 R 中执行此操作的最简单方法是什么?
最佳答案
一种方法是与每一侧的邻居制作矩阵并将它们加在一起。
rbind(z[-1,],0) + rbind(0,z[-nrow(z),]) + cbind(z[,-1],0) + cbind(0,z[,-ncol(z)])
## [,1] [,2] [,3]
## [1,] 6 9 8
## [2,] 13 20 17
## [3,] 12 21 14
关于r - 对于矩阵中的每个元素,找到其所有邻居的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22572901/