Ответ 1
Это ожидаемое поведение. То, что напечатано, не является тем, чем является объект. Для печати объект должен быть преобразован в символ. as.character.Date
вызывает format.Date
, который вызывает format.POSIXlt
. Раздел Value ?format.POSIXlt
(или ?strptime
) говорит:
Методы
format
иstrftime
возвращают символьные векторы представляя время.NA
время возвращается какNA_character_
.
Итак, почему NA
печатается, потому что печать structure(NA_real_, class = "Date")
возвращает NA_character_
. Например:
R> is.na(format(structure(Inf, class = "Date")))
[1] TRUE
R> is.na(format(structure(NaN, class = "Date")))
[1] TRUE
Если вы каким-то образом столкнетесь с этими выигрышными датами в своем коде, я рекомендую вам протестировать их, используя is.finite
вместо is.na
.
R> is.finite(structure(Inf, class = "Date"))
[1] FALSE
R> is.finite(structure(NaN, class = "Date"))
[1] FALSE