วิธีแก้ไขในอาร์กิวเมนต์ r: เกี่ยวข้องกับจำนวนบรรทัดที่แตกต่างกัน


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

 arguments imply differing number of rows: 6, 5

ข้อผิดพลาดนี้เกิดขึ้นเมื่อคุณพยายามสร้าง data frame และจำนวนแถวในแต่ละคอลัมน์ของ data frame ไม่เท่ากัน

ตัวอย่างต่อไปนี้แสดงวิธีการแก้ไขข้อผิดพลาดนี้ในทางปฏิบัติ

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

สมมติว่าเรากำลังพยายามสร้าง data frame ใน R โดยใช้เวกเตอร์ 3 ตัว:

 #definevectors
x1 <- c(1, 2, 3, 4, 5, 6)
x2 <- c(8, 8, 8, 7, 5)
y <- c(9, 11, 12, 13, 14, 16)

#attempt to create data frame using vectors as columns
df <- data. frame (x1=x1, x2=x2, y=y)

Error in data.frame(x1 = x1, x2 = x2, y = y): 
  arguments imply differing number of rows: 6, 5

เราได้รับข้อผิดพลาดเนื่องจากเวกเตอร์แต่ละตัวมีความยาวไม่เท่ากัน ดังนั้นแต่ละคอลัมน์ในกรอบข้อมูลผลลัพธ์จึงมีจำนวนแถวไม่เท่ากัน

เราสามารถตรวจสอบได้โดยการพิมพ์ความยาวของเวกเตอร์แต่ละตัว:

 #print length of each vector
length(x1)

[1] 6

length(x2)

[1] 5

length(y)

[1] 6

เราจะเห็นว่าเวกเตอร์ x2 มีความยาว 5 ซึ่งไม่ตรงกับความยาวของเวกเตอร์ x1 และ y

วิธีการแก้ไขข้อผิดพลาด

เพื่อแก้ไขข้อผิดพลาดนี้ เราเพียงแค่ต้องแน่ใจว่าเวกเตอร์แต่ละตัวมีความยาวเท่ากัน เพื่อให้แต่ละคอลัมน์ในกรอบข้อมูลผลลัพธ์มีจำนวนแถวเท่ากัน

ตัวอย่างเช่น เราสามารถแพดเวกเตอร์ที่สั้นที่สุดด้วยค่า NA เพื่อให้เวกเตอร์แต่ละตัวมีความยาวเท่ากัน:

 #definevectors
x1 <- c(1, 2, 3, 4, 5, 6)
x2 <- c(8, 8, 8, 7, 5)
y <- c(9, 11, 12, 13, 14, 16)

#pad shortest vector with NA's to have same length as longest vector
length(x2) <- length(y)

#create data frame using vectors as columns
df <- data. frame (x1=x1, x2=x2, y=y)

#view resulting data frame
df

  x1 x2 y
1 1 8 9
2 2 8 11
3 3 8 12
4 4 7 13
5 5 5 14
6 6 NA 16

โปรดทราบว่าเราไม่ได้รับข้อผิดพลาดเนื่องจากแต่ละคอลัมน์ในกรอบข้อมูลผลลัพธ์มีจำนวนแถวเท่ากัน

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

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

วิธีแก้ไขในอาร์กิวเมนต์ R: ไม่ใช่ทั้งตัวเลขหรือตรรกะ: return na
วิธีซ่อมแซมใน R: อาร์กิวเมนต์ที่ไม่ใช่ตัวเลขของตัวดำเนินการไบนารี
วิธีการซ่อมแซมใน R: การเปลี่ยนมีความยาวเป็นศูนย์

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

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