返回向量中最小值的索引?

hhh*_*hhh 63 r

a <- c(1, 2, 0, 3, 7)
Run Code Online (Sandbox Code Playgroud)

我正在寻找一个函数来返回最小值的索引,3.它是什么?

Jos*_*ien 96

您正在寻找which.min():

a <- c(1,2,0,3,7,0,0,0)
which.min(a)
# [1] 3

which(a == min(a))
# [1] 3 6 7 8
Run Code Online (Sandbox Code Playgroud)

(从上面可以看出,当几个元素被绑定为最小值时,which.min()只返回第一个元素的索引.如果你想要所有元素的索引匹配最小值,你可以使用第二个构造.)


Das*_*son 15

作为Josh答案的替代品

a <- c(1, 2, 0, 3, 7)
which(a == min(a))
Run Code Online (Sandbox Code Playgroud)

这给每个索引等于最小值.因此,如果我们有多个值匹配最低值

a <- c(1, 2, 0, 3, 7, 0)
which(a == min(a))  # returns both 3 and 6
which.min(a)        # returns just 3
Run Code Online (Sandbox Code Playgroud)

编辑:如果您正在寻找的是多少元素等于最小值(正如您在其中一条评论中所暗示的那样),您可以这样做:

a <- c(1, 2, 0, 3, 7, 0)
sum(a == min(a))
Run Code Online (Sandbox Code Playgroud)