Это ожидаемое поведение. То, что напечатано , не соответствует объекту . Для печати объект должен быть преобразован в символ. as.character.Date
вызывает format.Date
, который вызывает format.POSIXlt
. Раздел Value в ?format.POSIXlt
(или ?strptime
) говорит:
Методы
blockquote>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