मैं इस अप्रत्याशित सुविधा पर ध्यान दिया है:आर सूचियां - तत्व नाम कैसे प्रबंधित किए जाते हैं?
foo <- list(whatever=1:10)
अब, निम्नलिखित कार्यों के रूप में अच्छी तरह से: यह अप्रत्याशित परिणाम है
foo[["wha"]]
:
foo$wha
foo$w
foo$whateve
हालांकि, निम्नलिखित नहीं है (मेरे लिए अप्रत्याशित, वह है) कि यदि आपके पास दो संभावित नाम हैं, जैसे "CXCL1" और "CXCL11", और आप चाहते हैं अब सीएक्ससीएल 1 !is.null(foo$CXCL1)
का निरीक्षण करके शून्य नहीं है, यह सीएक्ससीएल 1 शून्य होने पर भी सत्य वापस आ जाएगा, लेकिन सीएक्ससीएल 11 नहीं है।
मेरे प्रश्न हैं:
- कैसे काम करता है?
foo$whatever
औरfoo[["whatever"]]
के बीच क्या अंतर है?- कोई भी इस व्यवहार को क्यों चाहेगा और मैं इसे कैसे अक्षम कर सकता हूं?
[यहां एक समान प्रश्न का मेरा उत्तर दिया गया है] (http://stackoverflow.com/questions/11066464/you-can- संक्षिप्त-list-names-why/11066583#11066583) –
'सहायता ("[[") 'यहां बहुत बढ़िया मूल्य है (यह आपके द्वारा अनुभव किए जा रहे 'आंशिक मिलान' पर चर्चा करता है)। आपको 'foo [["चीज़", सटीक = TRUE]] पर विचार करना चाहिए, यदि आपको मिलान में सटीकता की आवश्यकता है (यह' [['हालांकि) के लिए डिफ़ॉल्ट है। चेतावनियां प्राप्त करने के लिए आप 'विकल्प (चेतावनीपार्टियल मैचडॉलर = TRUE)' भी सेट कर सकते हैं। – hrbrmstr
आप कम से कम सभी संभावित नामों के साथ सूची भरकर और उन्हें सेट करके अपने मामले में समस्या से बच सकते हैं। 'सीएक्ससीएल 1 = नल' –