วิธีแก้ไขในอาร์กิวเมนต์ 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: การเปลี่ยนมีความยาวเป็นศูนย์