[英]in R, why does as.Date(Inf) display as NA, yet fails the test for being NA
這個問題的另一個標題是:
NA 日期什么時候不是 NA?
答案:當它被無窮大格式化為日期時。
將無窮大轉換為日期會導致顯示 NA,但事實並非如此!
> BadDates <- as.Date(c(NA,Inf,-Inf))
> BadDates
[1] NA NA NA
> is.na(BadDates)
[1] TRUE FALSE FALSE
這會在嘗試捕獲錯誤時造成混亂。 解決方法是測試無窮大和 NA
> is.na(BadDates) & is.infinite(BadDates)
[1] FALSE FALSE FALSE
有沒有更好的方法來管理日期 class 的這個怪癖?
is.finite(as.Date(NA))
和is.infinite(as.Date(NA))
都是 FALSE 所以is.finite
對於所有的壞日期都是 FALSE 但對於好的日期是 TRUE。
BadDates <- as.Date(c(NA,Inf,-Inf))
is.finite(BadDates)
## [1] FALSE FALSE FALSE
GoodDate <- Sys.Date()
is.finite(GoodDate)
## [1] TRUE
它在沒有日期的情況下同樣有效,因此它不特定於日期 class。
x <- c(NA, Inf, -Inf)
is.finite(x)
## [1] FALSE FALSE FALSE
is.finite(3)
## [1] TRUE
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.