捕获无法在R中转换为日期的字符串

lok*_*art 1 error-handling r

if如果字符串无法转换为日期,我想创建一个语句,如下所示:

as.Date("2010-00-01")
Run Code Online (Sandbox Code Playgroud)

但是运行上面的行只是继续给出下面的错误输出:

Error in charToDate(x) : 
  character string is not in a standard unambiguous format
Run Code Online (Sandbox Code Playgroud)

哪个我不能用它来if声明,if如果字符串无法转换为日期,如何使用语句?谢谢.

koh*_*ske 5

这是一个快速定义:

isDatable <- function(x) tryCatch(as.Date(x), error = function(e) FALSE)
Run Code Online (Sandbox Code Playgroud)

然后,

> isDatable("2012-00-01")
[1] FALSE
> isDatable("2012-01-01")
[1] "2012-01-01"
Run Code Online (Sandbox Code Playgroud)

所以你可以使用if:

if (!isDatable("2012-00-01")) {
    # something 
}
Run Code Online (Sandbox Code Playgroud)