我有一个矩阵,我想知道由相同数值表示的每个簇的中心和最小/最大大小。举例,得到如下矩阵中数字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
答案 0 :(得分:1)
您可以使用 which
并设置 arr.ind = TRUE
来获取矩阵具有特定值的位置。有了这个位置,可以计算 range
或 mean
。
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