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 ...