假设我有一个如下例所示的矩阵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] 的最小值是对应行 [3,] 的 4,而列 [2] 的最小值是对应行 [3,] 的 1。
如果我们需要按列索引使用apply
with MARGIN=2
并应用which.min
apply(m1, 2, which.min)
#[1] 3 3
如果一次需要 1 列:
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))
Or
apply(m1, 2, min)
Or
library(matrixStats)
rowMins(m1)
data
m1 <- matrix(6:1,nrow=3,ncol=2)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)