2009-04-13 10 views
110

का उपयोग कर अधिकतम मूल्य युक्त सूचकांक:ढूँढना पंक्ति निम्नलिखित मैट्रिक्स को देखते हुए यह मान रहा स्तंभ दो में अधिकतम मूल्य ढूंढना चाहते हैं आर

mat <- matrix(c(1:3,7:9,4:6), byrow = T, nc = 3) 
mat 
    [,1] [,2] [,3] 
[1,] 1 2 3 
[2,] 7 8 9 
[3,] 4 5 6 

मैं जानता हूँ कि max(mat[,2]) 8. मैं पंक्ति सूचकांक कैसे लौट सकते हैं वापस आ जाएगी, इस मामले में पंक्ति दो?

उत्तर

26

?order देखें। तुम बस (, या पहले घटते क्रम में) पिछले सूचकांक की जरूरत है, इसलिए इस चाल करना चाहिए:

order(matrix[,2],decreasing=T)[1] 
+5

+1 मुझे यह जवाब पसंद है क्योंकि यह मुझे अधिकतम अधिकतम की बजाय आसानी से शीर्ष पर देखने की अनुमति देता है। मैंने इसे किसी अन्य कॉलम से अधिकतम अधिकतम मानों की तिथियों को देखने के लिए उपयोगी पाया है। – djhocking

+7

लेकिन ध्यान रखें कि यह धीमा है। मैक्स, क्योंकि आपको पूरे कॉलम को सॉर्ट करने की आवश्यकता है :) – bartektartanus

+0

@bartektartanus और आप कैसे मानते हैं कि अधिकतम.मैक्स अधिकतम क्या है? : पी –

156

?which.max

> which.max(matrix[,2]) 
[1] 2 
1

देखें कैसे निम्नलिखित है, जहां y का नाम है के बारे में अपने मैट्रिक्स और आप पूरे मैट्रिक्स में अधिकतम के लिए देख रहे हैं:

row(y)[y==max(y)] 

यदि आप पंक्ति निकालना चाहते हैं:

y[row(y)[y==max(y)],] # this returns unsorted rows. 

क्रमबद्ध पंक्तियों का उपयोग लौटने के लिए:

y[sort(row(y)[y==max(y)]),] 

इस दृष्टिकोण का लाभ यह है कि आप कुछ भी आप की जरूरत करने के लिए अंदर सशर्त बदल सकता है। इसके अलावा, col(y) और लटकते कॉमा का स्थान आप कॉलम निकाल सकते हैं।

y[,col(y)[y==max(y)]] 

सिर्फ किसी खास कॉलम में अधिकतम की पंक्ति खोजें करने के लिए, का कहना है कि स्तंभ 2 आप इस्तेमाल कर सकते हैं:

seq(along=y[,2])[y[,2]==max(y[,2])] 

फिर सशर्त विभिन्न आवश्यकताओं के लिए देखने के लिए लचीला है।

अतिरिक्त विचारों के लिए फिल स्पेक्टर के उत्कृष्ट "एस और एस-प्लस के लिए एक परिचय" अध्याय 5 देखें।

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