-2

我想确定我的向量的哪个坐标给了我最大的价值。举一个简单的例子,假设:

x <- c(10,22,20,18,5)

最大值是 22,但我怎样才能自动识别坐标 2 具有最大值?

谢谢!

4

3 回答 3

4

which.max是@Hong Ooi 指出的你的朋友吗

> x <- c(10,22,20,18,5)
> which.max(x)
[1] 2

另一种(不是最佳方式)是which和的组合max

> which(x==max(x))
[1] 2
于 2013-07-15T18:41:22.923 回答
2

首先,找到 max 的最大值:

> max(x)
[1] 22

从那里,您可以找出向量中的哪些值与最大值匹配:

> x==max(x)
[1] FALSE  TRUE FALSE FALSE FALSE

which() 可用于将布尔向量转换为索引:

which(x==max(x))
[1] 2
于 2013-07-15T18:45:36.127 回答
1

因为您说的是坐标,所以我假设案例可能并不总是一维向量,因此我将对@Jilber 发表评论作为答案。

一般的答案是使用which(x == max(x), ind.arr = TRUE). 这将为您提供任何维度的数组的所有维度。例如

R> x <- array(runif(8), dim=rep_len(2, 3))                                                                                                                              
R> x
, , 1

          [,1]      [,2]
[1,] 0.3202624 0.7740697
[2,] 0.9374742 0.2370483

, , 2

          [,1]      [,2]
[1,] 0.9423731 0.2099402
[2,] 0.7035772 0.8195685

R> which(x == max(x), arr.ind=TRUE)
     dim1 dim2 dim3
[1,]    1    1    2

R> which(x[1, , ] == max(x[1, , ]), arr.ind=TRUE)
     row col
[1,]   1   2

R> which(x[1, 1, ] == max(x[1, 1, ]), arr.ind=TRUE)
[1] 2

对于一维向量的特定情况,which.max是一个“更快”的解决方案。

于 2013-07-15T19:34:40.560 回答