如果我有一个矩阵:
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? 对于某些上下文,我有大量的矩阵,我需要一个命令来隔离所有这些中的最高绝对数,包括符号(有些将是正数,其他为负数)。
提前致谢!
答案 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