2017-04-27 47 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]' –