r - 对于矩阵中的每个元素,找到其所有邻居的总和

标签 r matrix

给定一个矩阵,我想找到每个元素的邻居之和(所以结果是一个矩阵)。邻居是给定元素上方、下方和旁边的值,如果它们存在(不考虑对角元素)。

例子:

> 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/

相关文章:

r - R中数字信号处理的卷积

r - 可用的 r markdown 主题列表

r - 绘制 3D 曲面,重命名轴的标题

r - 如何在R中的上下面板中使用不同的数据集对函数?

c++ - (C++) 模板化 Matrix 类中的矩阵乘法

r - 使用 geom_sf() 绘制 sf 对象,其中包含除经纬度以外的任何投影

r makeCluster 命令曾经有效但现在在 RStudio 中失败

c# - 无法使用 Math.NET Numerics 从矩阵中删除行

python - Theano/Numpy 的矩阵求逆函数是否使用 GPU?

matlab - 如何在 matlab 中将给定的邻接矩阵表示为无向加权图?