Tôi đã nhận được thông báo lỗi này:
Error in if (condition) { : missing value where TRUE/FALSE needed
hoặc là
Error in while (condition) { : missing value where TRUE/FALSE needed
Nó có nghĩa là gì, và làm thế nào để tôi ngăn chặn nó?
Tôi đã nhận được thông báo lỗi này:
Error in if (condition) { : missing value where TRUE/FALSE needed
hoặc là
Error in while (condition) { : missing value where TRUE/FALSE needed
Nó có nghĩa là gì, và làm thế nào để tôi ngăn chặn nó?
Câu trả lời:
Việc đánh giá condition
kết quả trong một NA
. Các if
điều kiện phải có một TRUE
hoặc FALSE
kết quả.
if (NA) {}
## Error in if (NA) { : missing value where TRUE/FALSE needed
Điều này có thể vô tình xảy ra khi kết quả tính toán:
if(TRUE && sqrt(-1)) {}
## Error in if (TRUE && sqrt(-1)) { : missing value where TRUE/FALSE needed
Để kiểm tra xem một đối tượng bị thiếu sử dụng is.na(x)
chứ không phải x == NA
.
Xem thêm các lỗi liên quan:
Lỗi trong if / while (condition) {: đối số có độ dài bằng 0
Lỗi trong if / while (condition): đối số không thể hiểu là logic
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
NA
ở hai bên. Nếu tôi xác định:x = NA
và sau đó thực hiệnif (x == NA){ ... }
thì lỗi này sẽ được đưa ra trong thời gian chạy khi trình phân tích cú pháp kiểm tra phía bên trái của phép nhân đôi. Để khắc phục lỗi này, đảm bảo mọi biến trong điều kiện của bạn không sử dụng NAis.na(your_variable)
.