簡體   English   中英

在R中,為什么as.Date(Inf)顯示為NA,卻未能通過NA測試

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM