if / while 오류 (조건) {: TRUE / FALSE가 필요한 값이 없음


159

이 오류 메시지가 나타납니다.

Error in if (condition) { : missing value where TRUE/FALSE needed

또는

Error in while (condition) { : missing value where TRUE/FALSE needed

무엇을 의미하며 어떻게 방지합니까?


5
double equals 연산자는 NA어느 쪽이든 용납 할 수 없습니다 . 내가 정의 x = NA하고 다음을 수행 if (x == NA){ ... }하면 파서가 double equals의 왼쪽을 검사 할 때 런타임 에이 오류가 발생합니다. 이 오류를 해결하려면 조건부의 모든 변수가 NA를 사용하고 있지 않은지 확인하십시오 is.na(your_variable).
Eric Leschinski

답변:


203

의 평가 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 오류 (조건) {: 인수 길이가 0 임

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

10

null 또는 빈 문자열을 확인할 때이 문제가 발생했습니다.

if (x == NULL || x == '') {

로 변경

if (is.null(x) || x == '') {

1
참고로,!(length(x) == 1L && nzchar(x))
Frank
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.