使用any()和apply()的if语句出现问题

时间:2015-08-25 18:37:04

标签: r if-statement dataframe

假设我有以下信息表:

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

我很困惑为什么我收到此错误消息。

谢谢!

1 个答案:

答案 0 :(得分:1)

上面的Vlo评论是正确的:

return()仅作为函数的一部分,即返回函数的最终值。您在if语句中没有功能,因此您会收到return()本身的错误消息。

尝试以交互方式运行return("foo bar") - 您会看到相同的错误消息。

正如joran指出的那样,使用print打印到控制台而不是返回。