2013-06-30 14 views
6

मैं आदेश दिया वैक्टर संख्या से युक्त 0 और 1. के बीच मैं एक निश्चित मूल्य आर से अधिक पहले तत्व के सूचकांक को खोजने की जरूरत का एक समूह है: अबwhich.max() वापस नहीं करता है एनए

x <- c(0.1, 0.3, 0.4, 0.8) 
which.max(x >= 0.4) 
[1] 3 # This is exactly what I need 

कि मेरे लक्षित मूल्य वेक्टर में अधिकतम मूल्य खत्म हो गया है, which.max() 1, जो "असली" पहले मान के साथ भ्रमित किया जा सकता है रिटर्न:

which.max(x >= 0) 
[1] 1 
which.max(x >= 0.9) # Why? 
[1] 1 

मैं एक पाने के लिए इस अभिव्यक्ति को संशोधित कर सकता है नतीजतन एनए?

उत्तर

12

बस which() का उपयोग करें और पहला तत्व वापसी:

which(x > 0.3)[1] 
[1] 3 

which(x > 0.9)[1] 
[1] NA 

को समझने के लिए क्यों which.max() काम नहीं करता है, तो आप को समझने के लिए आर सांख्यिक तार्किक करने के लिए सांख्यिक से अपने मूल्यों coerces है।

x > 0.9 
[1] FALSE FALSE FALSE FALSE 

as.numeric(x > 0.9) 
[1] 0 0 0 0 

max(as.numeric(x > 0.9)) 
[1] 0 

which.max(as.numeric(x > 0.9)) 
[1] 1 
+0

उत्तर और स्पष्टीकरण के लिए दोनों का धन्यवाद! – ap53

संबंधित मुद्दे