You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R语言中查找矩阵每行最小值所在列(大矩阵场景)

如何在R中查找矩阵每行最小值所在的列号?

嘿,这个需求在矩阵处理里挺常见的,我给你两种base R里就能实现的方法,尤其是针对大矩阵的场景,第二种方法效率会更高哦!

首先先模拟你提到的示例场景(我直接构造了矩阵,确保能得到你期望的(3,4,1)结果):

# 构造符合你期望结果的示例矩阵
mat <- matrix(c(5,6,1, 2,7,8, 1,9,10, 4,3,11), nrow=3, byrow=TRUE)
print(mat)
#      [,1] [,2] [,3] [,4]
# [1,]    5    2    1    4
# [2,]    6    7    9    3
# [3,]    1    8   10   11

方法1:用apply() + which.min()

这是最直观的方法,apply()可以按行(MARGIN=1)处理矩阵,which.min()会返回当前行中最小值的位置(也就是列号):

row_min_cols <- apply(mat, 1, which.min)
print(row_min_cols)
# [1] 3 4 1

注意点:

如果某一行存在多个相同的最小值,which.min()只会返回第一个出现的最小值的列号,这是默认行为哦。

方法2:用max.col()(大矩阵首选)

如果你处理的是大尺寸矩阵,推荐用这个方法,因为max.col()是R内部优化的向量化函数,比apply()的逐行循环效率高很多。原理很简单:我们把矩阵取负数,原来的最小值就变成了最大值,再用max.col()找最大值的列号,就等价于找原矩阵最小值的列号:

row_min_cols <- max.col(-mat)
print(row_min_cols)
# [1] 3 4 1

两种方法都能得到你想要的结果,大矩阵情况下优先选第二种,速度会快不少~

内容的提问来源于stack exchange,提问作者John legend2

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 08:03:31