วิธีแก้ไขใน r: ข้อผิดพลาดใน rbind (deparse.level, …): หมายเลขคอลัมน์อาร์กิวเมนต์ไม่ตรงกัน


ข้อผิดพลาดที่คุณอาจพบใน R คือ:

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

ข้อผิดพลาดนี้เกิดขึ้นเมื่อคุณพยายามใช้ฟังก์ชัน rbind() ใน R เพื่อรวมเฟรมข้อมูลอย่างน้อย 2 เฟรมที่มีจำนวนคอลัมน์ไม่เท่ากันเข้าด้วยกัน

บทช่วยสอนนี้จะอธิบายวิธีแก้ไขข้อผิดพลาดนี้อย่างชัดเจน

วิธีการทำซ้ำข้อผิดพลาด

สมมติว่าเรามีเฟรมข้อมูลสองเฟรมต่อไปนี้ใน 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 บนคอลัมน์ทั่วไป

วิธีหนึ่งในการแก้ปัญหานี้คือการใช้ฟังก์ชัน intersect() เพื่อค้นหาชื่อคอลัมน์ทั่วไประหว่างกรอบข้อมูล จากนั้นเชื่อมโยงกรอบข้อมูลในคอลัมน์เหล่านั้นเท่านั้น:

 #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: ใช้ bind_rows() จาก dplyr

อีกวิธีในการแก้ปัญหานี้คือการใช้ฟังก์ชัน bind_rows() จากแพ็คเกจ 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 ไม่มีอยู่ในกรอบข้อมูลนี้

แหล่งข้อมูลเพิ่มเติม

บทช่วยสอนต่อไปนี้อธิบายวิธีแก้ไขข้อผิดพลาดทั่วไปอื่น ๆ ใน R:

วิธีแก้ไขใน R: ชื่อไม่ตรงกับชื่อก่อนหน้า
วิธีแก้ไขใน R: ความยาวของวัตถุที่ยาวกว่าไม่ใช่ผลคูณของความยาวของวัตถุที่สั้นกว่า
วิธีแก้ไขใน R: คอนทราสต์ใช้ได้กับปัจจัยที่มี 2 ระดับขึ้นไปเท่านั้น

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *