यह यहां किसी अन्य प्रश्न के उत्तर में आया था।स्तंभ नामों को अनदेखा करने के लिए rbind प्राप्त करने का सबसे आसान तरीका
> df<-data.frame(x=1:2,y=3:4)
> df
x y
1 1 3
2 2 4
> rbind(df,df[,2:1])
x y
1 1 3
2 2 4
3 1 3
4 2 4
बेशक
, वहाँ कामकाज से जुड़े हैं: जब आप rbind
दो डेटा फ्रेम, यह कॉलम नाम से नहीं बल्कि सूचकांक है, जो अनपेक्षित व्यवहार का कारण बन सकता से मेल खाता है। उदाहरण के लिए:
rbind(df,rename(df[,2:1],names(df)))
data.frame(rbind(as.matrix(df),as.matrix(df[,2:1])))
संपादित करें पर: rename
plyr
पैकेज वास्तव में इस तरह से काम नहीं करता है से (हालांकि मैंने सोचा कि मैं यह काम कर रहा है जब मैं मूल रूप से यह लिखा था ...)।
rbind(df,setNames(df[,2:1],names(df)))
इसके अलावा,, शायद आश्चर्य की बात सूचकांक द्वारा
data.frame(rbindlist(list(df,df[,2:1])))
काम करता है (और अगर हम एक डेटा तालिका कोई आपत्ति नहीं है, तो यह सुंदर है: जिस तरह से नाम बदलकर उसे ऐसा करने के लिए SimonO101 के समाधान का उपयोग करने के लिए है संक्षिप्त), तो यह do.call(rbind)
के बीच एक अंतर है।
सवाल यह है कि rbind
दो डेटा फ्रेमों का सबसे संक्षिप्त तरीका क्या है जहां नाम मेल नहीं खाते? मुझे पता है कि यह मामूली लगता है, लेकिन इस तरह की चीज अव्यवस्था कोड समाप्त कर सकती है। और मैं rbindByIndex
नामक एक नया फ़ंक्शन लिखना नहीं चाहता हूं। आदर्श रूप से यह rbind(df,df[,2:1],byIndex=T)
जैसा कुछ होगा।
दिलचस्प। हालांकि व्यक्तिगत रूप से मैं डेटाफ्रेम पर 'rbind'' नामित सबसेट (यानी कॉलम) से मेल खाने की देखभाल करता हूं। जब आप नाम से चीजों को "ट्रैक" नहीं करना चाहते हैं, तो पहले स्थान पर 'matrix' का उपयोग करें? –
एक (शायद एकमात्र) कारण 'मैट्रिक्स' का उपयोग न करने का कारण यह है क्योंकि यह प्रकारों के मिश्रण की अनुमति नहीं देता है। – mrip