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 заменяется на что угодно ...