2012-06-16 23 views
16

यह मुझे बहुत बुरा मिला। आप सूची नामों को संक्षिप्त कर सकते हैं? मैंने इसे पहले कभी नहीं देखा और मैं एक दिन की तरह पूरी तरह से खराब हो गया। क्या कोई यह बता सकता है कि यहां क्या हो रहा है और यह भयानक से अधिक उपयोगी क्यों हो सकता है? और इसके नीचे असंगत क्यों है? और अगर मैं इसे बंद कर सकता हूं?आप सूची नामों को संक्षिप्त कर सकते हैं? क्यूं कर?

अगर कोई आइटम के लिए सटीक मिलान है, यह का उपयोग करें:

> wtf <- list(whatisthe=1, pointofthis=2) 
> wtf$whatisthe 
[1] 1 
> wtf$what 
[1] 1 

> wtf <- list(whatisthe=1, whatisthepointofthis=2) 
> wtf$whatisthepointofthis 
[1] 2 
> wtf$whatisthep 
[1] 2 
> wtf$whatisthe 
[1] 1 
> wtf$what 
NULL 
+5

यह असंगत नहीं है। नामों के अग्रणी सबस्ट्रिंग को हल किया जाता है यदि केवल एक अद्वितीय मिलान होता है। –

+1

+1 मुझे इस बारे में सोचने के लिए * क्यों * '$' इस तरह कार्यान्वित किया गया है। –

+0

यह बेल प्रयोगशालाओं में एस के शुरुआती दिनों में वापस चला जाता है। यह एक बुरी बात है, लेकिन मैं अभी भी टाइपिंग को बचाने के लिए कभी-कभी इसका उपयोग करता हूं। फ़ंक्शन तर्कों में भी काम करता है, उदाहरण के लिए 'पूर्वानुमान (एम, टाइप = "resp")' या 'cor (x, y, use =" pair ")'। –

उत्तर

16

मुझे लगता है कि $ ऑपरेटर द्वारा आंशिक मेल इंटरैक्टिव उपयोग दिन पहले टैब पूरा होने

लागू किया गया था में वापस आपको लगता है कि व्यवहार पसंद नहीं है के लिए एक अच्छा (आर) विशेषता थी, तो आप उपयोग कर सकते हैं इसके बजाय "[[" ऑपरेटर। यह एक तर्क exact= लेता है, जो आपको आंशिक मिलान व्यवहार को नियंत्रित करने की अनुमति देता है, और जो TRUE पर डिफ़ॉल्ट है।

wtf[["whatisthep"]]     # Only returns exact matches 
# NULL 

wtf[["whatisthep", exact=FALSE]] # Returns partial matches without warning 
# [1] 2 

wtf[["whatisthep", exact=NA]]  # Returns partial matches & warns that it did 
# [1] 2 
# Warning message: 
# In wtf[["whatisthep", exact = NA]] : 
# partial match of 'whatisthep' to 'whatisthepointofthis' 

(यह एक कारण है कि आम तौर पर "[[" आर प्रोग्रामिंग में $ को पसंद किया जाता है है। एक और इस X <- "whatisthe"; wtf[[X]] ऐसा करने की क्षमता है, लेकिन है नहीं इस X <- "whatisthe"; wtf$X।)

+0

ग्रेट, धन्यवाद। मुझे यकीन है कि स्वतः पूर्ण सहायक होना चाहिए, लेकिन यह सिर्फ अशुभ लगता है। मैं बस इसके लिए काटने का इंतजार कर रहा हूं। – enfascination

+0

@ user1073999 - मैं सहमत हूं। मुझे यह भी लगता है कि मैंने कुछ आर प्रिंसिपल को शुरुआती डिज़ाइन निर्णय के बारे में देखा है, लेकिन अभी यह याद नहीं कर सकता कि कहां है। अगर किसी और ने इसे देखा है तो मुझे दिलचस्पी होगी। –

+2

आगे विचार पर, मैं देख सकता हूं कि टैब्ड स्वत: पूर्णता लागू होने से पहले यह इंटरैक्टिव उपयोग में मददगार होगा। –

2

सूची तत्व नाम (और समारोह पैरामीटर नाम) के लिए, आर निम्नलिखित कलन विधि लागू होता है। यदि कोई सटीक मिलान नहीं है, तो आंशिक मिलान देखें। यदि वास्तव में एक आंशिक मिलान है, तो इसका इस्तेमाल करें। अन्यथा, कुछ भी नहीं उपयोग करें।

+0

मुझे लगता है कि पूर्ण एल्गोरिदम भी स्थितित्मक मिलान का उपयोग करता है। – Andrie

+0

क्या आप विस्तारित कर सकते हैं? उदाहरण के लिए '> a <- function (aa, ab) {paste (aa, ab, sep = "")}' '> a (a = 1, a = 2)' 'त्रुटि में त्रुटि (ए = 1, ए = 2): औपचारिक तर्क "एए" कई वास्तविक तर्कों से मेल खाता है ' –

+0

मैं बस देख रहा हूं कि आपको तर्क का नाम नहीं देना है, जिस स्थिति में आर स्थितित्मक मिलान का उपयोग करता है। चूंकि आप तर्क नाम और कोई नाम रखने के मामले को मिश्रित कर सकते हैं, इसलिए मेरी राय में एक पूर्ण उत्तर का उल्लेख करना चाहिए। तो, आपके उदाहरण में 'ए (1, ab = 2)' अभी भी काम करेगा, जैसा कि 'a (ab = 2, 1) 'है। – Andrie

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

  • कोई संबंधित समस्या नहीं^_^