2012-02-06 12 views
9

मेरे पास दो वर्ण वैक्टर, एक्स और वाई हैं।अद्वितीय और/या अनुपलब्ध मानों को खोजने के लिए आर में वर्ण वैक्टर की तुलना

x <- c("a", "b", "c", "d", "e", "f", "g") 
y <- c("a",  "c", "d", "e",  "g") 

एक्स के अंदर मान कभी दोहराना नहीं है (यानी, वे सभी अद्वितीय हैं)। वेक्टर वाई के लिए भी यही है। मेरा सवाल यह है कि, मैं दो वैक्टरों की तुलना करने के लिए आर कैसे प्राप्त कर सकता हूं, और फिर मुझे बताएं कि एक्स के संबंध में वाई से कौन से तत्व गायब हैं? अन्यथा कहा, मैं चाहता हूं कि आर मुझे बताए कि "बी" और "एफ" वाई से गायब हैं।

(नोट, मेरे वास्तविक डेटा में, एक्स और वाई प्रत्येक में कुछ हज़ार अवलोकन होते हैं, यही कारण है कि मैं इसे प्रोग्रामेटिक रूप से करना चाहता हूं। शायद एक बहुत ही सरल जवाब है, लेकिन मुझे यकीन नहीं था कि खोजना क्या है आर मदद फाइलों में)।

मदद करने वाले किसी भी व्यक्ति के लिए धन्यवाद!

+1

यह सवाल बहुत http://stackoverflow.com/questions/1837968/r-how-to-tell-what-is-in-one-vector के समान है -और-नहीं-एक और –

+0

इसी पोस्ट के लिए खेद है! इसे जोड़ने के लिए धन्यवाद और उत्तर देने वाले सभी को धन्यवाद। – Alexander

उत्तर

25
setdiff(x,y) 

आपके लिए काम करेगा।

5

मुझे लगता है कि यह काम करना चाहिए:

x[!(x %in% y)] 

सबसे पहले यह सब एक्स कि y में नहीं हैं के लिए जाँच करता है, तो यह है कि का उपयोग करता है मूल पर एक सूचकांक के रूप में।

8
> x[!x %in% y] 
[1] "b" "f" 

या:

> x[-match(y,x)] 
[1] "b" "f" 
>