ifelse () elimina el atributo POSIXct del vector de marcas de tiempo?

Esto es raro: R'sifelse() parece hacer un casting (no deseado): Digamos que tengo un vector de marcas de tiempo (posiblemente NA) y los valores de NA deben tratarse de manera diferente a las fechas existentes, por ejemplo, simplemente ignorado:

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

Ahora

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    

como se desee, pero la traducción en 30 segundos da como resultado

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

Tenga en cuenta que todavíatimestamp+30 funciona como se esperaba, pero digamos que quiero reemplazar las fechas de NA por una fecha fija y traducir todas las demás por 30 segundos:

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

Pregunta: ¿qué tiene de malo esta solución y por qué no funciona como se espera?

Editar: la salida deseada es un vector de marcas de tiempo (no de enteros) traducidas por 30 segundos y los NA reemplazados por lo que sea ...

Respuestas a la pregunta(2)

Su respuesta a la pregunta