आर

2015-10-20 3 views
6

में डुप्लिकेट सूची नाम आर में डुप्लिकेट सूची नाम होने पर क्या हो रहा है?आर

l <- list() 
l[["A"]] <- 5 
l[["B"]] <- 7 
l[["C"]] <- 9 
names(l) <- c("B", "B", "C") 

टाइप l[["B"]] रिटर्न

$B 
[1] 5 

l रिटर्न

$B 
[1] 5 

$B 
[1] 7 

$C 
[1] 9 

वहाँ "कुंजी" "बी" के लिए सभी मूल्यों को पुनः प्राप्त करने के लिए एक मानक तरीका है लिखने से?

+0

यही कारण है कि आपको वास्तव में डुप्लिकेट नाम होने से बचना चाहिए। नाम अद्वितीय होने के लिए हैं। – MrFlick

उत्तर

7

जब आपके पास डुप्लिकेट नाम होते हैं और आप नाम से सबसेट कहते हैं, तो केवल पहला तत्व लौटा दिया जाता है। वास्तव में, [[ वैसे भी आपको कभी भी एक तत्व देगा, तो चलिए इसके बजाय [ देखें।

l["B"] 
# $B 
# [1] 5 

हम यह भी देख सकते हैं कि c("B", "B") सबसेट के रूप में की कोशिश कर भी हमें सही परिणाम नहीं देंगे क्योंकि आर वापस चला जाता है और पहली B फिर से हो जाता है।

l[c("B", "B")] 
# $B 
# [1] 5 
# 
# $B 
# [1] 5 

सभी B तत्वों को पुनः प्राप्त करने का सबसे सुरक्षित तरीके से names() वेक्टर के एक तार्किक सबसेट का उपयोग करने के लिए है। यह हमें सही तत्व देगा।

l[names(l) == "B"] 
# $B 
# [1] 5 
# 
# $B 
# [1] 7 

यह एक महान उदाहरण है कि डुप्लिकेट नामों से क्यों बचा जाना चाहिए।