2017-04-27 44 views
1

我见过this,但我想知道为什么它不在我的情况下工作发现指数大于0

我有这样的载体:

num<-c(0.000000, 4.220190, 1.421267, 1.004988, 5.060632, 1.100000, 3.744329, 5.728001, 4.707441, 4.100000, 5.200961, 5.060632, 2.282542 
    ,1.676305, 0.509902, 0.781025, 2.968164, 5.916925, 5.235456, 5.371220) 

,然后我试图找到最低值大于0是0.509902 所以我有

which.min(num > 0) 

,但它给了我

1 

0.00

+0

它会给你1,因为你正在搜索TRUE和FALSE之间的最小值(一旦你做了'强制逻辑') num> 0')这是你的第一个元素FALSE。 – Sotos

+0

不是一个完整的重复,因为它不显示如何找到索引,但[这里只是为了参考](http://stackoverflow.com/questions/25615439/find-minimum-non-zero-value-in- a-column-r) – Sotos

回答

1

我们可以替换值小于或等于0与NA和使用which.min

i1 <- which.min(replace(num, num<=0, NA)) 
i1 
#[1] 15 

或略有更紧凑的方式索引

which.min(num*NA^(num <=0)) 
#[1] 15 


num[i1] 
#[1] 0.509902 
+0

还要考虑'order(num)[num!= 0] [1]' –