วิธีแก้ไขข้อผิดพลาดใน r: ชื่อไม่ตรงกับชื่อก่อนหน้า
ข้อผิดพลาดทั่วไปที่คุณอาจพบใน R คือ:
Error in match.names(clabs, names(xi)): names do not match previous names
ข้อผิดพลาดนี้เกิดขึ้นเมื่อคุณพยายามใช้ฟังก์ชัน rbind() เพื่อผูกสองเฟรมข้อมูล แต่ชื่อคอลัมน์ของเฟรมข้อมูลทั้งสองไม่ตรงกัน
บทช่วยสอนนี้จะแชร์ขั้นตอนที่คุณสามารถใช้เพื่อแก้ไขข้อผิดพลาดนี้
ตัวอย่าง: วิธีแก้ไข “ชื่อไม่ตรงกับชื่อก่อนหน้า”
สมมติว่าเรามีเฟรมข้อมูลสองเฟรมต่อไปนี้ใน R:
#create and view first data frame df1 <- data. frame (var1=c(1, 3, 3, 4, 5), var2=c(7, 7, 8, 3, 2)) df1 var1 var2 1 1 7 2 3 7 3 3 8 4 4 3 5 5 2 #create and view first second frame df2 <- data. frame (var3=c(3, 3, 6, 6, 8), var4=c(1, 1, 2, 8, 9)) df2 var3 var4 1 3 1 2 3 1 3 6 2 4 6 8 5 8 9
หากเราพยายามใช้ฟังก์ชัน rbind() เพื่อผูกเฟรมข้อมูลทั้งสองนี้ เราจะได้รับข้อผิดพลาด:
#attempt to row bind the two data frames
rbind(df1, df2)
Error in match.names(clabs, names(xi)):
names do not match previous names
เราได้รับข้อผิดพลาดนี้เนื่องจากชื่อคอลัมน์ของเฟรมข้อมูลทั้งสองไม่ตรงกัน
กรอบข้อมูลแรกมีชื่อคอลัมน์ต่อไปนี้:
- var1
- var2
และกรอบข้อมูลที่สองประกอบด้วยชื่อคอลัมน์ต่อไปนี้:
- var3
- var4
เรายังสามารถใช้โค้ดต่อไปนี้เพื่อตรวจสอบว่าชื่อคอลัมน์เหมือนกันระหว่างสองเฟรมข้อมูลหรือไม่:
#check if column names are identical between two data frames
identical(names(df1), names(df2))
[1] FALSE
เราจะเห็นว่าชื่อคอลัมน์ไม่เหมือนกัน
เพื่อแก้ไขข้อผิดพลาดนี้ เราสามารถเปลี่ยนชื่อคอลัมน์ในกรอบข้อมูลที่สองด้วยตนเองเพื่อให้ตรงกับชื่อคอลัมน์ในกรอบข้อมูลแรก:
#define two data frames df1 <- data. frame (var1=c(1, 3, 3, 4, 5), var2=c(7, 7, 8, 3, 2)) df2 <- data. frame (var3=c(3, 3, 6, 6, 8), var4=c(1, 1, 2, 8, 9)) #rename second data frame columns names(df2) <- c(' var1 ', ' var2 ') #row bind the two data frames rbind(df1, df2) var1 var2 1 1 7 2 3 7 3 3 8 4 4 3 5 5 2 6 3 1 7 3 1 8 6 2 9 6 8 10 8 9
เราจะเห็นว่า rbind() เชื่อมโยงเฟรมข้อมูลทั้งสองได้สำเร็จเนื่องจากชื่อคอลัมน์ตรงกัน
อีกวิธีในการแก้ไขข้อผิดพลาดนี้คือการใช้ฟังก์ชัน ชื่อ () เพื่อกำหนดชื่อคอลัมน์จากกรอบข้อมูลแรกไปยังกรอบข้อมูลที่สองโดยอัตโนมัติ:
#define two data frames df1 <- data. frame (var1=c(1, 3, 3, 4, 5), var2=c(7, 7, 8, 3, 2)) df2 <- data. frame (var3=c(3, 3, 6, 6, 8), var4=c(1, 1, 2, 8, 9)) #rename second data frame columns names(df2) <- names(df1) #row bind the two data frames rbind(df1, df2) var1 var2 1 1 7 2 3 7 3 3 8 4 4 3 5 5 2 6 3 1 7 3 1 8 6 2 9 6 8 10 8 9
ขอย้ำอีกครั้งว่า rbind() สามารถผูกเฟรมข้อมูลทั้งสองได้สำเร็จ เนื่องจากทั้งสองเฟรมใช้ชื่อคอลัมน์เดียวกัน
แหล่งข้อมูลเพิ่มเติม
วิธีใช้ rbind ใน R (พร้อมตัวอย่าง)
วิธีใช้ cbind ใน R (พร้อมตัวอย่าง)
วิธีเพิ่มแถวใน data frame ใน R