如何获得矩阵(R)中簇的大小

时间:2021-07-07 04:19:39

标签: r matrix

我有一个矩阵,我想知道由相同数值表示的每个簇的中心和最小/最大大小。举例,得到如下矩阵中数字2所代表的簇的中心位置和大小。这个想法接近于在图像上执行How to obtain size of cluster of pixels in R

> read.csv("4c_class.csv")
   X1 X1.1 X1.2 X1.3 X1.4 X1.5 X1.6 X3 X3.1 X3.2
1   1    1    1    1    1    1    1  3    3    3
2   1    1    1    1    1    1    1  3    3    3
3   1    1    1    1    1    1    1  1    1    3
4   1    1    1    1    1    1    1  1    1    1
5   1    1    1    1    1    1    1  1    1    1
6   4    1    1    1    1    1    1  1    1    1
7   4    1    1    1    1    1    2  1    1    1
8   4    1    1    1    1    1    2  1    1    1
9   4    1    1    1    1    2    2  2    1    1
10  4    4    1    1    1    2    2  2    2    1
11  4    4    1    1    1    1    2  2    2    1
12  4    4    1    1    1    1    2  2    2    1
13  4    4    1    1    1    1    2  2    2    1
14  4    4    1    1    1    1    1  2    2    1
15  4    4    1    1    1    1    1  2    1    1
16  4    4    4    1    1    1    1  2    1    1
17  4    4    4    4    1    1    1  1    1    1
18  4    4    4    4    4    4    1  1    1    1
19  4    4    4    4    4    4    1  1    1    1

1 个答案:

答案 0 :(得分:1)

您可以使用 which 并设置 arr.ind = TRUE 来获取矩阵具有特定值的位置。有了这个位置,可以计算 rangemean

y <- which(x == 2, TRUE)

apply(y, 2, range) #Range
#     row col
#[1,]   7   6
#[2,]  16   9

apply(y, 2, mean) #Center
#      row       col 
#11.318182  7.727273