如何识别R中的坐标

时间:2013-07-15 18:35:53

标签: r

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

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

最大值是22,但是如何自动识别坐标2具有最大值?

谢谢!

3 个答案:

答案 0 :(得分:4)

@Hong Ooi指出

which.max是你的朋友

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

另一种(非最佳方式)是whichmax的组合。

> which(x==max(x))
[1] 2

答案 1 :(得分:2)

首先,使用max:

找到最大值
> max(x)
[1] 22

从那里,您可以确定向量中的哪个值匹配最大值:

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

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

which(x==max(x))
[1] 2

答案 2 :(得分: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是一种“更快”的解决方案。