मैं यह पता लगाने की कोशिश कर रहा हूं कि क्यों rbind
फ़ंक्शन नाम के बिना डेटा.फ्रेम में शामिल होने के इरादे से काम नहीं कर रहा है।नाम के बिना rbind data.frames
test <- data.frame(
id=rep(c("a","b"),each=3),
time=rep(1:3,2),
black=1:6,
white=1:6,
stringsAsFactors=FALSE
)
# take some subsets with different names
pt1 <- test[,c(1,2,3)]
pt2 <- test[,c(1,2,4)]
# method 1 - rename to same names - works
names(pt2) <- names(pt1)
rbind(pt1,pt2)
# method 2 - works - even with duplicate names
names(pt1) <- letters[c(1,1,1)]
names(pt2) <- letters[c(1,1,1)]
rbind(pt1,pt2)
# method 3 - works - with a vector of NA's as names
names(pt1) <- rep(NA,ncol(pt1))
names(pt2) <- rep(NA,ncol(pt2))
rbind(pt1,pt2)
# method 4 - but... does not work without names at all?
pt1 <- unname(pt1)
pt2 <- unname(pt2)
rbind(pt1,pt2)
यह मेरे लिए थोड़ा अजीब लगता है: यहाँ मेरी परीक्षण है। क्या मुझे एक अच्छा कारण याद आ रहा है कि यह बॉक्स से बाहर क्यों नहीं काम करना चाहिए? अतिरिक्त जानकारी
debug
लिए @ JoshO'Brien के सुझाव का उपयोग के लिए
संपादित करें, मैं rbind.data.frame
समारोह
if (is.null(pi) || is.na(jj <- pi[[j]]))
(के ऑनलाइन संस्करण के इस if
बयान भाग के दौरान होने वाली के रूप में त्रुटि पहचान कर सकते हैं यहां कोड: http://svn.r-project.org/R/trunk/src/library/base/R/dataframe.R से शुरू: "### यहां rbind और cbind के तरीके हैं।")
प्रोग्राम के माध्यम से कदम से, pi
का मान इस बिंदु पर सेट नहीं किया गया प्रतीत होता है, इसलिए प्रोग्राम pi
जैसे pi[[3]]
और त्रुटियों को अनुक्रमित करने का प्रयास करता है।
if (is.null(clabs)) clabs <- names(xi) else { #pi gets set here
मैं इस लगाने की कोशिश कर एक उलझन में हूँ:
मैं क्या समझ सकते हैं, आंतरिक pi
वस्तु इस पहले लाइन जहां clabs
NULL
के रूप में शुरू कर दिया गया की वजह से स्थापित किया जाना प्रकट नहीं होता है बाहर, लेकिन यह एक साथ आता है के रूप में अद्यतन होगा।
'rbind.data.frame' के कोड पर एक नज़र डालें ** जिनमें से अधिकांश ** कॉलम और पंक्ति नामों की जांच और मेल खाने से संबंधित हैं। आप 'डीबग (rbind.data.frame) 'कर सकते हैं और फिर यह निर्धारित करने के लिए कि आपकी त्रुटि कहां फेंक दी गई है, अपनी विधि 4 के माध्यम से कदम उठाएं। –
@ जोशो'ब्रायन - ने कुछ और जानकारी प्रदान करने के लिए अपडेट किया है। मैं कोड की व्याख्या करने में बहुत अच्छा नहीं हूं और इसमें काम कर रहा हूं, लेकिन शायद यह किसी और के लिए स्पष्ट होगा। – thelatemail