ifelse () удаляет атрибут POSIXct из вектора меток времени?

Это странно: R'sifelse() Похоже, что происходит некоторое (нежелательное) приведение: допустим, у меня есть вектор меток времени (возможно, NA), и значения NA следует обрабатывать иначе, чем существующие даты, например, просто игнорировать:

formatString = "%Y-%m-%d %H:%M:%OS"
timestamp = c(as.POSIXct(strptime("2000-01-01 12:00:00.000000", formatString)) + (1:3)*30, NA)

Сейчас

timestamp
#[1] "2000-01-01 12:00:30 CET" "2000-01-01 12:01:00 CET" "2000-01-01 12:01:30 CET"
#[6] NA    

по желанию, но перевод на 30 секунд приводит к

ifelse(is.na(timestamp), NA, timestamp+30)
#[1] 946724460 946724490 946724520        NA

Обратите внимание, что до сих пор,timestamp+30 работает как положено, но допустим, я хочу заменить даты NA на фиксированную дату и перевести все остальные на 30 секунд:

fixedDate = as.POSIXct(strptime("2000-01-01 12:00:00.000000", formatString))
ifelse(is.na(timestamp), fixedDate, timestamp+30)
#[1] 946724460 946724490 946724520 946724400

Вопрос: что не так с этим решением и почему оно не работает так, как ожидалось?

Редактировать: желаемый результат - это вектор меток времени (не целых чисел), переведенных за 30 секунд, и NA заменяется на что угодно ...

Ответы на вопрос(2)

Ваш ответ на вопрос