我有兴趣使用 R 来识别0-1(布尔)值的矩阵(不一定是正方形)内的连续区域。我想,给定一个0-1值的矩阵来识别每个连续的簇(对角线计数,尽管是否计算它们的选项是理想的)并记录该簇内的单元数。
采用以下示例:
set.seed(14)
p <- matrix(0, ncol = 10, nrow = 10)
p[sample(1:100, 10)] <- 1
ones <- which(p == 1)
image(p)
我希望能够识别(因为我计算对角线)四个不同的组,每个群组(从上到下)有2个,1个,5个和2个单元格。
raster
包具有adjacent
功能,可以很好地定位相邻的单元格,但我无法弄清楚如何执行此操作。
最后一个限制是理想的解决方案应该是快速的。我希望能够在具有大量组的data.table
dt[, lapply(.SD, ...)]
类型的情况下使用它(每个组都是我可以创建矩阵的数据集)。