编辑:非常感谢下面的用户做出的巨大贡献和Gregor的基准测试.
假设我有一个矩阵填充了像这样的整数值...
mat <- matrix(1:100, 10, 10)
Run Code Online (Sandbox Code Playgroud)
我可以像这样创建每个元素的x,y坐标列表......
addresses <- expand.grid(x = 1:10, y = 1:10)
Run Code Online (Sandbox Code Playgroud)
现在对于这些坐标中的每一个(即对于垫子中的每个元素),我想找到相邻元素(包括对角线,这应该使8个邻居).
我相信有一个简单的方法,任何人都可以帮忙吗?
到目前为止,我所尝试的是循环并为每个元素记录相邻元素,如下所示;
neighbours <- list()
for(i in 1:dim(addresses)[1]){
x <- addresses$x[i]
y <- addresses$y[i]
neighbours[[i]] <- c(mat[y-1, x ],
mat[y-1, x+1],
mat[y , x+1],
mat[y+1, x+1],
mat[y+1, x ],
mat[y+1, x-1],
mat[y , x-1],
mat[y-1, x-1])
}
Run Code Online (Sandbox Code Playgroud)
当它碰到矩阵的边缘时会遇到问题,特别是当索引大于矩阵的边缘时.