Double sama dengan operator tidak dapat mentoleransi sebuah NAdi kedua sisi. Jika saya mendefinisikan: x = NAdan kemudian melakukan if (x == NA){ ... }kesalahan maka ini akan dilemparkan pada saat runtime ketika parser memeriksa sisi kiri sama dengan ganda. Untuk memperbaiki kesalahan ini, pastikan setiap variabel dalam kondisi Anda tidak menggunakan NA is.na(your_variable).
Eric Leschinski
Jawaban:
203
Evaluasi conditionmenghasilkan NA. The ifbersyarat harus memiliki sebuah TRUEatau FALSEhasil.
if(NA){}## Error in if (NA) { : missing value where TRUE/FALSE needed
Ini dapat terjadi secara tidak sengaja sebagai hasil perhitungan:
if(TRUE&& sqrt(-1)){}## Error in if (TRUE && sqrt(-1)) { : missing value where TRUE/FALSE needed
Untuk menguji apakah sebuah benda yang hilang digunakan is.na(x)daripada x == NA.
if(NULL){}## Error in if (NULL) { : argument is of length zeroif("not logical"){}## Error: argument is not interpretable as logicalif(c(TRUE,FALSE)){}## Warning message:## the condition has length > 1 and only the first element will be used
NA
di kedua sisi. Jika saya mendefinisikan:x = NA
dan kemudian melakukanif (x == NA){ ... }
kesalahan maka ini akan dilemparkan pada saat runtime ketika parser memeriksa sisi kiri sama dengan ganda. Untuk memperbaiki kesalahan ini, pastikan setiap variabel dalam kondisi Anda tidak menggunakan NAis.na(your_variable)
.Jawaban:
Evaluasi
condition
menghasilkanNA
. Theif
bersyarat harus memiliki sebuahTRUE
atauFALSE
hasil.Ini dapat terjadi secara tidak sengaja sebagai hasil perhitungan:
Untuk menguji apakah sebuah benda yang hilang digunakan
is.na(x)
daripadax == NA
.Lihat juga kesalahan terkait:
Kesalahan dalam if / while (kondisi) {: argumen panjang nol
Kesalahan saat / saat (kondisi): argumen tidak dapat ditafsirkan sebagai logis
sumber
Saya mengalami ini ketika memeriksa string nol atau kosong
mengubahnya menjadi
sumber
!(length(x) == 1L && nzchar(x))