Предположим, что у меня есть следующая таблица информации:Проблема с тем, если-заявление с использованием любого() и применить()
firstname <- c('Todd','Sven','Robert','Jovan','Angelo')
city <- c('Edmond', NA ,'Miami','Houston', NA)
state <- c('OK','KS', NA, 'TX', NA)
job <- c('Clown','Plumber','Professor', 'Uber Driver', 'Therapist')
list_test <- data.frame(firstname, city, state, job)
list_test
firstname city state job
1 Todd Edmond OK Clown
2 Sven <NA> KS Plumber
3 Robert Miami <NA> Professor
4 Jovan Houston TX Uber Driver
5 Angelo <NA> <NA> Therapist
Я хочу вернуть сообщение, если какой-либо из столбцов NA, которые могут быть которые были определены следующим образом:
any(apply(list_test, 2, function(x){any(is.na(x))}))
[1] TRUE
Моя мысль заключается в создании простого оператора if-return, как показано ниже.
if(any(apply(list_test, 2, function(x){any(is.na(x))}))) {
return("At least one row has an NA value.")
}
Однако, я получаю следующее сообщение об ошибке:
Error: no function to return from, jumping to top level
Я смущен, почему я получаю сообщение об ошибке.
Спасибо!
Возможно, вы имели в виду 'print' или' stop', а не 'return'? Кроме того, возможно, более идиоматично делать 'any (sapply (list_test, function (x) {any (is.na (x))}))'. – joran
Ваше определение «если какой-либо из столбцов является NA» в основном совпадает с «есть ли какое-либо NA в data.frame», и в этом случае мы можем просто «any (is.na (list_test))». Ваш код возвращает ошибку, потому что 'return()' может быть помещен только в функцию. – Vlo
Спасибо вам обоим. Я попытался «остановить» и «предупредить» с успехом. – glonn