找到最大绝对值,同时保留+或 - 符号

时间:2014-07-09 11:42:37

标签: r matrix

如果我有一个矩阵:

mat=matrix(c(-21,14,28,17,-16,-9,-17,-30,18), nrow=3)
mat
          [,1]   [,2]  [,3]
     [1,]  -21     17    17
     [2,]   14    -16   -30
     [3,]   28     -9    18

我可以用

简单地隔离最高绝对值
max(abs(mat))

但是,如何保留标志,以便返回-30? 对于某些上下文,我有大量的矩阵,我需要一个命令来隔离所有这些中的最高绝对数,包括符号(有些将是正数,其他为负数)。

提前致谢!

2 个答案:

答案 0 :(得分:10)

您需要矩阵中值的索引,该索引是最大绝对值,然后您可以使用该索引返回值本身。 which.max会执行此操作(而which.min则相反):

mat[which.max( abs(mat) )]
# [1] -30

答案 1 :(得分:6)

以Simon的回答为基础。如果您想要一个返回向量或矩阵的绝对最大值的函数,可以使用以下代码:

absmax <- function(x) { x[which.max( abs(x) )]}

,例如,

> absmax(c(-10, 0, 9))
[1] -10