I need to get the row and column name of the smallest element of a matrix
我需要得到矩阵中最小元素的行和列名称。
> mat = matrix(data=runif(12), nrow = 4, ncol=4)
> rownames(mat) = colnames(mat) = letters[1:4]
>
> mat
a b c d
a 0.3167865 0.6958895 0.4233572 0.3167865
b 0.1042599 0.1552235 0.8461520 0.1552235
c 0.6286461 0.9749868 0.2390978 0.6286461
d 0.5923721 0.7823673 0.8427426 0.5923721
> min = min(mat)
> min
> 0.1042599
In this example I'd like to get "a" and "b"
在这个例子中,我想要得到a和b
1 个解决方案
#1
39
> inds = which(mat == min(mat), arr.ind=TRUE)
> inds
row col
a 1 2
> rnames = rownames(mat)[inds[,1]]
> cnames = colnames(mat)[inds[,2]]
This will give you the row/column names for each entry that equals the minimum value; if you just want the first one, you could only check inds[1,1] and inds[1,2].
这将为每个等于最小值的条目提供行/列名称;如果你只想要第一个,你只能检查inds[1,1]和inds[1,2]。
#1
39
> inds = which(mat == min(mat), arr.ind=TRUE)
> inds
row col
a 1 2
> rnames = rownames(mat)[inds[,1]]
> cnames = colnames(mat)[inds[,2]]
This will give you the row/column names for each entry that equals the minimum value; if you just want the first one, you could only check inds[1,1] and inds[1,2].
这将为每个等于最小值的条目提供行/列名称;如果你只想要第一个,你只能检查inds[1,1]和inds[1,2]。