วิธีแก้ไขในอาร์กิวเมนต์ r: มีความยาวเป็นศูนย์


ข้อความแสดงข้อผิดพลาดที่คุณอาจพบเมื่อใช้ R คือ:

 Error in if (x < 10) {: argument is of length zero

ข้อผิดพลาดนี้มักเกิดขึ้นเมื่อคุณพยายามทำการเปรียบเทียบเชิงตรรกะในคำสั่ง if ใน R แต่ตัวแปรที่คุณใช้ในการเปรียบเทียบมีความยาวเป็นศูนย์

สองตัวอย่างของตัวแปรที่มีความยาวเป็นศูนย์คือ ตัวเลข() หรือ Character(0)

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

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

สมมติว่าเราสร้างตัวแปรตัวเลขต่อไปนี้ใน R โดยมีความยาวเป็นศูนย์:

 #create numeric variable with length of zero
x <- numeric()

ตอนนี้ สมมติว่าเราพยายามใช้ตัวแปรนี้ใน คำสั่ง if:

 #if x is less than 10, print x to console
if(x < 10 ) {
  x
}

Error in if (x < 10) {: argument is of length zero

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

หากเราสร้างตัวแปรตัวเลขที่มีค่าจริง เราจะไม่ได้รับข้อผิดพลาดนี้เมื่อใช้คำสั่ง if:

 #create numeric variable
y <- 5

#if y is less than 10, print y to console
if(y < 10 ) {
  y
}

[1] 5

วิธีการหลีกเลี่ยงข้อผิดพลาด

เพื่อหลีกเลี่ยงข้อผิดพลาด ความยาวอาร์กิวเมนต์เป็นศูนย์ เราจำเป็นต้องรวมฟังก์ชัน isTRUE ซึ่งใช้ตรรกะต่อไปนี้:

 is. logical (x) && length(x) == 1 && !is. na (x) && x

หากเราใช้ฟังก์ชันนี้ในคำสั่ง if เราจะไม่ได้รับข้อผิดพลาดเมื่อเปรียบเทียบตัวแปรของเรากับค่า:

 if(isTRUE(x) && x < 10 ) {
  x
}

แทนที่จะได้รับข้อผิดพลาด เรากลับไม่ได้รับเอาต์พุตเนื่องจากฟังก์ชัน isTRUE(x) ประเมินเป็น FALSE ซึ่งหมายความว่าค่าของ x จะไม่ถูกพิมพ์ออกมา

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

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

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

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

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