假设我有一个类似下面示例的矩阵,称为m1
:
m1<-matrix(6:1,nrow=3,ncol=2)
[,1] [,2]
[1,] 6 3
[2,] 5 2
[3,] 4 1
如何获取每一列最小值的索引行?
我知道which.min()
将返回每一行的列索引值。
输出应为:3和3,因为列[,1]的最小值为4对应于行[3,],列[,2]的最小值为1对应于行[3,]。
答案 0 :(得分:2)
如果我们需要按列索引,请将apply
与MARGIN=2
一起使用并应用which.min
apply(m1, 2, which.min)
#[1] 3 3
如果一次需要一列:
apply(as.matrix(m1[,1, drop = FALSE]), 2, which.min)
如果我们选中?Extract
,则默认用法为
x [i,j,...,drop = TRUE]
drop-用于矩阵和数组。如果为TRUE,则结果强制为最小尺寸(请参见示例)。这仅适用于提取元素,不适用于替换。有关更多详细信息,请参见drop。
为避免尺寸下降,请使用drop = FALSE
如果我们需要每一行的最小值
do.call(pmin, as.data.frame(m1))
或
apply(m1, 2, min)
或
library(matrixStats)
rowMins(m1)
m1 <- matrix(6:1,nrow=3,ncol=2)