【发布时间】:2013-07-15 18:35:52
【问题描述】:
我想确定我的向量的哪个坐标给了我最大的价值。举个简单的例子,假设:
x <- c(10,22,20,18,5)
最大值是22,但是如何自动识别坐标2的最大值呢?
谢谢!
【问题讨论】:
-
which.max(x).
标签: r
我想确定我的向量的哪个坐标给了我最大的价值。举个简单的例子,假设:
x <- c(10,22,20,18,5)
最大值是22,但是如何自动识别坐标2的最大值呢?
谢谢!
【问题讨论】:
which.max(x).
标签: r
which.max 是@Hong Ooi 指出的你的朋友
> x <- c(10,22,20,18,5)
> which.max(x)
[1] 2
另一种(不是最佳方式)是which 和max 的组合。
> which(x==max(x))
[1] 2
【讨论】:
首先,找到max的最大值:
> max(x)
[1] 22
从那里,您可以找出向量中的哪些值与最大值匹配:
> x==max(x)
[1] FALSE TRUE FALSE FALSE FALSE
which() 可用于将布尔向量转换为索引:
which(x==max(x))
[1] 2
【讨论】:
int。
因为您说的是坐标,所以我假设实例可能并不总是一维向量,因此我将对@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 是一个“更快”的解决方案。
【讨论】: