आर

2011-12-26 7 views
8

में एक सदिश एक और बूलियन वेक्टर का उपयोग कर subsetting निम्न दो आर वैक्टर का उपयोग करना, मैं boolMe में बूलियन मूल्यों का उपयोग कर valMe के एक सबसेट को निकालने के लिए चाहते हैं। इसके अलावा, मैं दो संभावित आउटपुट प्राप्त करना चाहता हूं, एक जहां boolMe में FALSE मान valMe से निकाले गए हैं, और एक जहां FALSE मान NA द्वारा प्रतिस्थापित किए जाते हैं। क्या मैं कोड में क्या करना चाहते हैं के आगे चित्रण:आर

इनपुट

boolMe<-c(FALSE, TRUE, TRUE, TRUE, FALSE, TRUE) 
valMe<-1:6 

इरादे से उत्पादन

NA 2 3 4 NA 6 

या

2 3 4 6 
+0

पायथन में, मैं इसे कुछ ऐसा करूँगा: '>> ए = [झूठा, सही, झूठा, झूठा, झूठा, झूठा] >>> बी = [10, 11, 12, 13, 14, 15] >>> [ज़िप, ए, बी) के लिए बीबी (ए, बी) यदि एए] [11] ' – hhh

+2

' पायथन 3 'में, आयात itertools; सूची (itertools.compress (बी, ए)) ' – kev

उत्तर

11

आप सीधे सूचकांक कर सकते हैं valMe[ ऑपरेटर का उपयोग करके: और अधिक विस्तार के लिए

> valMe[boolMe] 
[1] 2 3 4 6 

देखें अनुभाग 2.7 of the intro manual

7

इसी प्रकार, यदि आप NAS हैं:

> valMe[!boolMe] <- NA 
> valMe 
[1] NA 2 3 4 NA 6 

! तार्किक बूलियन को नकारता है ताकि आप मूल्यों तुम्हारी याद आ रही चाहते हैं। फिर, आर उत्कृष्टता के स्पर्श में, आप चयनित मानों को एनए असाइन करते हैं।