【问题标题】:Find row and column index of maximum value in a matrix [duplicate]在矩阵中查找最大值的行和列索引[重复]
【发布时间】:2013-07-10 12:33:48
【问题描述】:

我希望找到矩阵的最大元素值及其位置(在矩阵中的行和列 id 中)。

我正在使用以下函数来返回矩阵的行和列。

这似乎是一个糟糕的 hack —— 这是我可能缺少本地方法的事情。有没有更好的 / more R 方式?

这是我的功能:

matxMax <- function(mtx)
{
    colmn <- which(mtx == max(mtx)) %/% nrow(mtx) + 1
    row <- which(mtx == max(mtx)) %% nrow(mtx)
    return( matrix(c(row, colmn), 1))
}

我使用如下:

mm <- matrix(rnorm(100), 10, 10)
maxCords <- matxMax(mm)
mm[maxCords]

【问题讨论】:

  • 解决方案是相同的,但我确实搜索过,我认为有一个解决方案可以同时满足 max 和 min 的情况(我记得也搜索过 min)。此外,该功能(尽管在这种情况下是多余的)可能具有一定的教学价值。

标签: r matrix


【解决方案1】:

你可以的

## Some data
set.seed(123)
mm <- matrix(rbinom(40, 20, 0.5), 8, 5)
mm
#      [,1] [,2] [,3] [,4] [,5]
# [1,]    9   10    8   11   11
# [2,]   12   10    6   11   12
# [3,]    9   14    9   10    6
# [4,]   13   10   14   11   10
# [5,]   13   11   13    9   12
# [6,]    6   10   11    8    8
# [7,]   10    7   11   14    9
# [8,]   13   13   16   13    8

which(mm == max(mm), arr.ind = TRUE)
#      row col
# [1,]   8   3

【讨论】:

  • 有没有办法找到第二个最大值的位置?第二个最大值可能与第一个最大值相同,在这种情况下,我想获取第二个最大值的位置,该位置与第一个最大值完全相同。
  • @user2543622,您是否在设置中的示例中尝试过建议的解决方案?建议的解决方案提供了矩阵中等于最大值的所有元素的列表。因此,如果有关系,您将获得所有关系。
  • @user2543622,这里是前十名:which(mm &gt;= tail(sort(mm), n=10)[1], arr.ind=TRUE)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-02-12
  • 2021-01-13
  • 2021-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多