2011-06-14 11 views
5

में "कौन सा" आर में हर परिस्थितियां हैं जहां इंडेक्सिंग के लिए "कौन सा" का उपयोग आर में लॉजिकल इंडेक्सिंग के साथ मिश्रित नहीं किया जा सकता है? मुझे लगता है कि इन दो महीनों पहले इन दोनों के साथ गॉचा में आ रहा था - पंक्ति संख्या के कुछ आंतरिक धारणा को बनाए रखने के स्वाद के साथ कुछ और यह "जो" के उपयोग के साथ अच्छी तरह से खेल नहीं रहा है, जब मैं लॉजिकल इंडेक्सिंग का इस्तेमाल कहीं और करता था कुछ पंक्तियों को छोड़ने के लिए।लॉजिकल इंडेक्सिंग के साथ गॉथस और आर

क्या यह एक ज्ञात घटना है, या मैंने पूरी चीज का सपना देखा?

+0

आप 'किस' का उपयोग क्यों कर रहे हैं? संभावना है कि आपको इसकी आवश्यकता नहीं है। – hadley

उत्तर

10

ध्यान रखें कि एनए और अन्य ऐसी प्रविष्टियां स्थिति को भ्रमित कर सकती हैं। @ Mdsumner के उदाहरण के बाद:

> x <- c(1:10,NA,NaN,Inf) 
> x > 5 
[1] FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE NA NA 
[13] TRUE 
> x[x > 5] 
[1] 6 7 8 9 10 NA NA Inf 
> x[which(x > 5)] 
[1] 6 7 8 9 10 Inf 
+0

यकीन नहीं है कि यह यह था, लेकिन वास्तव में, यह बहुत मुश्किल है। धन्यवाद! – dwh

6

which रिटर्न सूचकांक एक वेक्टर या एक मैट्रिक्स/सरणी या data.frame से स्लाइस से तत्वों का चयन करने, और इन तार्किक वैक्टर के साथ "मिश्रित" नहीं किया जा सकता

सभी नंबरों> 5 में के लिए तार्किक वेक्टर पर विचार करें इस सदिश:

x <- 1:10 
x > 5 
[1] FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE 

एक 10 तत्व तार्किक वेक्टर है, लेकिन जो() बराबर लंबाई 5 से है:

जो (एक्स> 5) [1] 6 7 8 9 10

इन चीजों को मिश्रण करने में सक्षम नहीं होने के बारे में कुछ भी जटिल नहीं है, वे सिर्फ एक साथ नहीं जाते हैं। पहले परोक्ष पहले पांच तत्वों को छोड़ देता है, और डेटा और तार्किक वेक्टर

x[x > 5] 

और दूसरे के बीच स्थिति मिलान के आधार पर पिछले पांच रहता है स्पष्ट रूप से केवल पिछले पांच तत्वों

x[which(x > 5)] 
चुन रही है,

वही परिणाम, लेकिन "[" ऑपरेटर के लिए तर्क प्रत्येक मामले में काफी अलग है। यह लागू होता है कि चयनित तत्व data.frame में वेक्टर या पंक्तियों में सिंगलटन मान हैं या नहीं।

+0

सच है, लेकिन, जैसा कि आपने बताया, काफी "गॉचा" नहीं। मैं इस अंतर से अवगत था, और मुझे पूरा यकीन है कि यह मुझे नहीं चल रहा था। – dwh

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