मैं मैट्रिक्स की एक सूची है मान लीजिए:मैट्रिक्स की एक सूची में प्रत्येक पंक्ति के 2 उच्चतम मूल्यों रखें r
$`2010`
1 2 3 4
1 0 3 5 6
2 5 1 9 5
3 0 0 0 0
4 10 10 10 0
$`2011`
1 2 3 4
1 0 2 3 6
2 5 0 3 1
3 2 4 0 1
4 2 1 2 1
कोड मैट्रिक्स बनाने के लिए:
cntry<-c(1,2,3,4)
a<-c(0,5,0,10)
b<-c(3,1,0,10)
c<-c(5,9,0,10)
d<-c(6,5,0,0)
k<-data.frame(a,b,c,d)
k<-as.matrix(k)
dimnames(k)<-list(cntry,cntry)
e<-c(0,5,2,2)
f<-c(2,0,4,1)
g<-c(3,3,0,2)
h<-c(6,1,1,1)
l<-data.frame(e,f,g,h)
l<-as.matrix(l)
dimnames(l)<-list(cntry,cntry)
list<-list(k,l)
names(list)<-2010:2011
मैं रखना चाहते हैं प्रत्येक पंक्ति में दो उच्चतम मान, और उसी पंक्ति में अन्य कोशिकाओं के शेष छोटे मानों को 0 के साथ प्रतिस्थापित करें।
यदि दो से अधिक कोशिकाएं हैं जिनके पास उच्चतम मूल्य है, तो मैं उन सभी कोशिकाओं को छोड़ना चाहता हूं (उदाहरण के लिए: 10 10 10 0-> 10 10 10 0, 5 1 9 5 -> 5 0 9 5)। पंक्ति की सभी अन्य कोशिकाओं को फिर से 0 पर सेट किया जाना चाहिए।
परिणाम इस तरह दिखना चाहिए:
$`2010`
1 2 3 4
1 0 0 5 6
2 5 0 9 5
3 0 0 0 0
4 10 10 10 0
$`2011`
1 2 3 4
1 0 0 3 6
2 5 0 3 0
3 2 4 0 0
4 2 0 2 0
मुझे यकीन है कि कैसे इस समस्या दृष्टिकोण नहीं हूँ, इसलिए किसी भी मदद अत्यधिक का स्वागत है!
शायद 'y <' का उपयोग करें क्योंकि यह '% में'% से तेज़ होगा? इसके अलावा, फ्लोटिंग पॉइंट नंबरों के साथ बेहतर काम करने की संभावना है। +1। – BrodieG
@ ब्रोडीजी अच्छा बिंदु! धन्यवाद। – jbaums