使用 R 查找包含最大值的行索引
给定以下矩阵,假设我想找到第二列中的最大值:
mat <- matrix(c(1:3,7:9,4:6), byrow = T, nc = 3)
mat
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 7 8 9
[3,] 4 5 6
我知道 max(mat[,2]) 将返回 8。如何返回行索引,在本例中为 row二?
Given the following matrix lets assume I want to find the maximum value in column two:
mat <- matrix(c(1:3,7:9,4:6), byrow = T, nc = 3)
mat
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 7 8 9
[3,] 4 5 6
I know max(mat[,2])
will return 8. How can I return the row index, in this case row two?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
请参阅
?which.max
See
?which.max
请参阅
?顺序
。 您只需要最后一个索引(或第一个索引,按降序排列),所以这应该可以解决问题:See
?order
. You just need the last index (or first, in decreasing order), so this should do the trick:下面怎么样,其中 y 是矩阵的名称,并且您正在寻找整个矩阵中的最大值:
如果要提取行:
要返回排序的行,请使用:
这种方法的优点是您可以更改有条件地满足您需要的任何内容。 此外,使用
col(y)
和悬挂逗号的位置,您还可以提取列。要仅查找特定列中最大值的行,例如第 2 列,您可以使用:
同样,条件可以灵活地查找不同的要求。
请参阅 Phil Spector 出色的“S 和 S-Plus 简介”第 5 章,了解更多想法。
How about the following, where y is the name of your matrix and you are looking for the maximum in the entire matrix:
if you want to extract the row:
To return sorted rows use:
The advantage of this approach is that you can change the conditional inside to anything you need. Also, using
col(y)
and location of the hanging comma you can also extract columns.To find just the row for the max in a particular column, say column 2 you could use:
again the conditional is flexible to look for different requirements.
See Phil Spector's excellent "An introduction to S and S-Plus" Chapter 5 for additional ideas.
使用 dplyr 的另一种方式:
A different way using dplyr:
有一个函数
max.col()
。 对于每一行,它都会找到哪一列具有最大值:要找到每列的最大行,只需转置矩阵:
There is a function
max.col()
. For every row it finds which column has the maximum value:To find the maximum row for each column instead, simply transpose the matrix: