矩阵每一列的最小行的返回索引

时间:2019-05-18 20:50:42

标签: r matrix

假设我有一个类似下面示例的矩阵,称为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,]。

1 个答案:

答案 0 :(得分:2)

如果我们需要按列索引,请将applyMARGIN=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)