Как предположил @akrun, это проблема перехода на летнее время. Глядя на дни до и после 6
:
format(testDate + days(c(5,7)), format = "%Y-%m-%d %H:%M:%S")
# [1] "2018-11-03 00:00:00" "2018-11-05 00:00:00"
, вы заметите, что это означает «полночь» (как и следовало ожидать).
В Сан-Паулу, Бразилия, в 2018 г. он откатился в полночь 4-го ( ref ) в полночь:
Когда местное стандартное время приближалось к воскресенью, 4 ноября 2018 г., 12 : 00:00 полночь часы были переведены вперед 1 час до воскресенья, 4 ноября 2018 г., 1: 00:00 местное летнее время.
Это означает, что 3 ноября, 23:59:59, существовало, но как только он прошел на секунду вперед, стало 4 ноября, 01:00:00. Это предполагает, что (математически) 3 ноября 00:00:00 никогда не существовало.
Из-за этого R сообщает вам, что метка времени не является допустимым временем, возвращая NA
.
Однако вы можете довольно легко справиться с Date
объектами:
testDate + days(5:7)
# [1] "2018-11-03 -03" NA "2018-11-05 -02"
as.Date(testDate) + days(5:7)
# [1] "2018-11-03" "2018-11-04" "2018-11-05"