ฉันได้รับข้อความแสดงข้อผิดพลาดนี้:
Error in if (condition) { : missing value where TRUE/FALSE needed
หรือ
Error in while (condition) { : missing value where TRUE/FALSE needed
มันหมายความว่าอย่างไรและฉันจะป้องกันได้อย่างไร
ฉันได้รับข้อความแสดงข้อผิดพลาดนี้:
Error in if (condition) { : missing value where TRUE/FALSE needed
หรือ
Error in while (condition) { : missing value where TRUE/FALSE needed
มันหมายความว่าอย่างไรและฉันจะป้องกันได้อย่างไร
คำตอบ:
การประเมินผลในการcondition
เงื่อนไขต้องมีอย่างใดอย่างหนึ่งหรือผล NA
if
TRUE
FALSE
if (NA) {}
## Error in if (NA) { : missing value where TRUE/FALSE needed
สิ่งนี้สามารถเกิดขึ้นโดยบังเอิญเนื่องจากผลลัพธ์ของการคำนวณ:
if(TRUE && sqrt(-1)) {}
## Error in if (TRUE && sqrt(-1)) { : missing value where TRUE/FALSE needed
เพื่อทดสอบว่าวัตถุจะหายไปใช้มากกว่าis.na(x)
x == NA
ดูข้อผิดพลาดที่เกี่ยวข้อง:
เกิดข้อผิดพลาดใน if / while (เงื่อนไข) {: อาร์กิวเมนต์มีความยาวเป็นศูนย์
เกิดข้อผิดพลาดใน if / while (เงื่อนไข): อาร์กิวเมนต์ไม่สามารถตีความได้ว่าเป็นตรรกะ
if (NULL) {}
## Error in if (NULL) { : argument is of length zero
if ("not logical") {}
## Error: argument is not interpretable as logical
if (c(TRUE, FALSE)) {}
## Warning message:
## the condition has length > 1 and only the first element will be used
ฉันพบปัญหานี้เมื่อตรวจสอบสตริงว่างหรือสตริงว่าง
if (x == NULL || x == '') {
เปลี่ยนเป็น
if (is.null(x) || x == '') {
!(length(x) == 1L && nzchar(x))
NA
ทั้งสองด้านได้ ถ้าฉันกำหนด:x = NA
แล้วทำif (x == NA){ ... }
ข้อผิดพลาดนี้จะถูกโยนที่รันไทม์เมื่อ parser ตรวจสอบด้านซ้ายมือของคู่เท่ากับis.na(your_variable)
เพื่อแก้ไขข้อผิดพลาดนี้ให้แน่ใจว่าตัวแปรในเงื่อนไขของคุณทุกคนไม่ได้ใช้ NA