R में कैसे ठीक करें: rbind(deparse.level,…) में त्रुटि: तर्क स्तंभ संख्याएँ मेल नहीं खातीं


R में आपके सामने एक त्रुटि आ सकती है:

 Error in rbind(deparse.level, ...): 
  numbers of columns of arguments do not match 

यह त्रुटि तब होती है जब आप दो या दो से अधिक डेटा फ़्रेमों को एक साथ जोड़ने के लिए R में rbind() फ़ंक्शन का उपयोग करने का प्रयास करते हैं जिनमें कॉलम की संख्या समान नहीं होती है।

यह ट्यूटोरियल सटीक रूप से बताता है कि इस त्रुटि को कैसे ठीक किया जाए।

त्रुटि को पुन: उत्पन्न कैसे करें

मान लीजिए कि हमारे पास R में निम्नलिखित दो डेटा फ़्रेम हैं:

 #create first data frame
df1 <- data. frame (x=c(1, 4, 4, 5, 3),
                  y=c(4, 4, 2, 8, 10))

df1

  xy
1 1 4
2 4 4
3 4 2
4 5 8
5 3 10

#create second data frame
df2 <- data. frame (x=c(2, 2, 2, 5, 7),
                  y=c(3, 6, 2, 0, 0),
                  z=c(2, 7, 7, 8, 15))

df2

  X Y Z
1 2 3 2
2 2 6 7
3 2 2 7
4 5 0 8
5 7 0 15

अब मान लीजिए कि हम इन दो डेटा फ़्रेमों को एक ही डेटा फ़्रेम में बाँधने के लिए rbind का उपयोग करने का प्रयास करते हैं:

 #attempt to row-bind the two data frames together
rbind(df1, df2)

Error in rbind(deparse.level, ...): 
  numbers of columns of arguments do not match

हमें एक त्रुटि प्राप्त होती है क्योंकि दो डेटा फ़्रेमों में कॉलमों की संख्या समान नहीं है।

त्रुटि को कैसे ठीक करें

इस समस्या को हल करने के दो तरीके हैं:

विधि 1: सामान्य स्तंभों पर rbind का उपयोग करें

इस समस्या को हल करने का एक तरीका डेटा फ़्रेम के बीच सामान्य कॉलम नाम ढूंढने के लिए इंटरसेक्ट() फ़ंक्शन का उपयोग करना है, और फिर डेटा फ़्रेम को केवल उन कॉलम पर लिंक करना है:

 #find common column names
common <- intersect(colnames(df1), colnames(df2))

#row-bind only on common column names
df3 <- rbind(df1[common], df2[common])

#view result
df3

   xy
1 1 4
2 4 4
3 4 2
4 5 8
5 3 10
6 2 3
7 2 6
8 2 2
9 5 0
10 7 0

विधि 2: dplyr से बाइंड_रोज़() का उपयोग करें

इस समस्या को हल करने का दूसरा तरीका dplyr पैकेज से बाइंड_रोज़() फ़ंक्शन का उपयोग करना है, जो बेमेल कॉलम नामों के लिए स्वचालित रूप से NA मान भरता है:

 library (dplyr)

#bind together the two data frames
df3 <- bind_rows(df1, df2)

#view result
df3

   X Y Z
1 1 4 NA
2 4 4 NA
3 4 2 NA
4 5 8 NA
5 3 10 NA
6 2 3 2
7 2 6 7
8 2 2 7
9 5 0 8
10 7 0 15

ध्यान दें कि NA मान df1 मानों के लिए पॉप्युलेट किए गए हैं क्योंकि इस डेटा फ़्रेम में z कॉलम मौजूद नहीं था।

अतिरिक्त संसाधन

निम्नलिखित ट्यूटोरियल बताते हैं कि आर में अन्य सामान्य त्रुटियों को कैसे हल किया जाए:

आर में कैसे ठीक करें: नाम पिछले नामों से मेल नहीं खाते
आर में कैसे ठीक करें: लंबी वस्तु की लंबाई छोटी वस्तु की लंबाई का गुणज नहीं है
आर में कैसे ठीक करें: कंट्रास्ट केवल 2 या अधिक स्तरों वाले कारकों पर लागू किया जा सकता है

एक टिप्पणी जोड़ने

आपका ईमेल पता प्रकाशित नहीं किया जाएगा. आवश्यक फ़ील्ड चिह्नित हैं *