相关疑难解决方法(0)

在R中找到矩阵的相邻元素

编辑:非常感谢下面的用户做出的巨大贡献和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)

当它碰到矩阵的边缘时会遇到问题,特别是当索引大于矩阵的边缘时.

r matrix adjacency-matrix

6
推荐指数
2
解决办法
3412
查看次数

标签 统计

adjacency-matrix ×1

matrix ×1

r ×1