【发布时间】:2016-10-18 10:31:34
【问题描述】:
我有兴趣使用 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.tabledt[, lapply(.SD, ...)] 类型的情况下使用它(每个组都是我可以从中创建矩阵的数据集)。
【问题讨论】:
-
你对creating neighbours感兴趣吗?
-
在此处复制,stackoverflow.com/q/35772846/604456。请参阅光栅包中的
clump函数。 -
@AndyW 如果您将其写为答案,我会接受并将其标记为已关闭
-
我会将其标记为重复关闭。对于系统来说,总比让相同的答案四处漫游要好。