2012-03-22 11 views
6

निम्नलिखित "वी $ एक करने में त्रुटि: $ ऑपरेटर परमाणु वैक्टर के लिए अमान्य है" त्रुटि फेंक (कम से कम आर संस्करण 2.14.1 में):

v <- c(a='a',b='b') 
v$a 

जाहिर है, आर पहले इस अनुमति, बनाता है मुझे क्यों उत्सुक है।

संपादित करें: जैसा कि नीचे बताया गया है, v$a पिछले संस्करणों में NULL लौटा होगा। "पहले हाल ही में" काफी हाल ही में बदल दिया गया, क्योंकि मैंने इसे पुराने इंटरनेट मंचों पर आधारित किया है और नीचे सही किया गया है।

+0

टायलर द्वारा प्रदान किया गया लिंक दिखाता है कि "काफी हाल ही में" का आपका संस्करण तर्कसंगत रूप से विकृत है और यह भी सुझाव देता है कि यह कभी भी उत्पादक रणनीति नहीं हो सकता है, क्योंकि जब आप सोचते हैं कि यह 'न्यूल' वापस आ जाता है "ए" लौटा दिया है। –

उत्तर

7

मेरा मानना ​​है कि कारण यह है कि v$a बनाम v[['a']] का उपयोग कम सुरक्षित माना जाता है।

संपादित करें: अधिक जानकारी के लिए यह LINK देखें।

+1

क्या से सुरक्षित है? –

+22

@MattParker: लाश। –

+2

देखें [LINK] (http://tolstoy.newcastle.edu.au/R/e3/help/07/12/5772.html) –

6

?"$" के विवरण अनुभाग के तीसरे पैरा:

'$' पुनरावर्ती वस्तुओं के लिए ही मान्य है, और केवल पुनरावर्ती वस्तुओं पर नीचे अनुभाग में चर्चा की है। गैर-रिकर्सिव ऑब्जेक्ट्स पर इसका उपयोग को आर 2.5.0 में बहिष्कृत किया गया था और आर 2.7.0 में हटा दिया गया था।

आर-2.7.0 अप्रैल, 2008 में जारी किया गया था। चार साल "हाल के" से बहुत दूर हैं, लेकिन हो सकता है कि आप थोड़ी देर के लिए पीछे कुछ संस्करण रहे हों?

+0

धन्यवाद। कोई विचार क्यों गैर-रिकर्सिव ऑब्जेक्ट्स के लिए इसे बहिष्कृत किया गया था? यह भाषाओं के संदर्भ में काफी हाल ही में है ... प्रकार :-)। मैं वास्तव में केवल एक वर्ष के लिए आर का उपयोग कर रहा हूं, इसलिए यह परिवर्तन मेरे समय से पहले था। – Jonathan

+1

@ जोनाथन: [टायलर रिंकर के उत्तर] की टिप्पणियों में लिंक/चर्चा देखें (http://stackoverflow.com/a/9824326/271616)। –

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

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