gpt4 book ai didi

r - 查找矩阵中最大连通区域的大小

转载 作者:行者123 更新时间:2023-12-01 11:16:45 25 4
gpt4 key购买 nike

所以我有一个矩阵(n 行 x m 列)并且想找到具有最多连接“1”的区域。例如,如果我有以下矩阵:

1 1 0 0
0 1 1 0
0 0 1 0
1 0 0 0

矩阵中有2个“1”的区域。

第一个区域:

1 1
1 1
1

第二个区域:

1

我想创建一个算法来输出最大值 = 5。我认为这与深度优先搜索有关,但我只有基础 R 并且可以访问一些包。

最佳答案

您可以使用 SDMTools。首先,我们将矩阵转换为栅格,然后检测连接单元格的 block ( block )。每个团 block 都有一个唯一的 ID。 NA 和零用作背景值。最后,PatchStat 提供每个补丁的统计信息。

library(raster)
library(SDMTools)

r <- raster(mat)
rc <- clump(r)
as.matrix(rc)
     [,1] [,2] [,3] [,4] [,5]
[1,] NA 1 1 1 1
[2,] 1 NA NA 1 NA
[3,] 1 1 1 NA 1
[4,] NA NA NA NA NA
[5,] 2 2 NA NA NA
p <- PatchStat(rc)
max(p$n.cell)

[1] 10

示例数据

set.seed(2)
m <- 5
n <- 5
mat <- round(matrix(runif(m * n), m, n))
mat
     [,1] [,2] [,3] [,4] [,5]
[1,] 0 1 1 1 1
[2,] 1 0 0 1 0
[3,] 1 1 1 0 1
[4,] 0 0 0 0 0
[5,] 1 1 0 0 0

关于r - 查找矩阵中最大连通区域的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49828805/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com