【发布时间】:2021-07-21 00:08:24
【问题描述】:
我有一个矩阵,我想知道由相同数值表示的每个簇的中心和最小/最大大小。
例如,获取由以下矩阵中的数字 2 表示的簇的中心位置和大小(或最小/最大列/行)。这个想法仅限于在图像上执行 How to obtain size of cluster of pixels in R 和 How to obtain size of multi clusters in matrix (R)
但是当我使用函数apply(matrix2, 2, mean) 和apply(matrix2, 2, range) 时,结果会合并两个集群。有没有办法获取每个集群?
> matrix<- read.csv("2_ind_matrix.csv")
X1 X1.1 X1.2 X1.3 X1.4 X1.5
1 1 1 1 1 1 1
2 1 1 1 1 1 1
3 1 1 1 1 1 1
4 1 1 1 2 2 2
5 1 1 1 1 2 2
6 1 1 1 1 1 1
7 1 1 1 1 1 1
8 1 1 1 1 1 1
9 1 1 1 1 1 1
10 1 1 1 1 1 1
11 2 1 1 1 1 1
12 2 1 1 1 1 1
13 2 1 1 1 1 1
14 2 2 1 1 1 1
15 2 2 2 1 1 1
16 2 2 2 2 2 2
17 2 2 2 2 2 2
> matrix2<- which(matrix == 2, TRUE)
> apply(matrix2, 2, range) #Range
row col
[1,] 4 1
[2,] 17 6
> apply(matrix2, 2, mean) #Center
row col
13.16 3.20
【问题讨论】:
-
你的问题不清楚。你到底想要什么?位置的平均值还是平均值?您刚刚使用了 which 功能。这样不行吗?