r datetime posixct

Manera confiable de detectar si una columna en un data.frame es.POSIXct



posixct to date r (3)

El paquete lubridate tiene las is.POSIXt , is.POSIXct , is.POSIXlt y is.Date .

R tiene is.vector , is.list , is.integer , is.double , is.numeric , is.factor , is.character , etc. ¿Por qué no hay is.POSIXct , is.POSIXlt o is.Date ?

Necesito una forma confiable de detectar el objeto POSIXct , y la class(x)[1] == "POSIXct" parece realmente ... sucia.


Personalmente solo usaría inherits como joran sugirió. Podrías usarlo para crear tu propia función is.POSIXct .

# functions is.POSIXct <- function(x) inherits(x, "POSIXct") is.POSIXlt <- function(x) inherits(x, "POSIXlt") is.POSIXt <- function(x) inherits(x, "POSIXt") is.Date <- function(x) inherits(x, "Date") # data d <- data.frame(pct = Sys.time()) d$plt <- as.POSIXlt(d$pct) d$date <- Sys.Date() # checks sapply(d, is.POSIXct) # pct plt date # TRUE FALSE FALSE sapply(d, is.POSIXlt) # pct plt date # FALSE TRUE FALSE sapply(d, is.POSIXt) # pct plt date # TRUE TRUE FALSE sapply(d, is.Date) # pct plt date # FALSE FALSE TRUE


Puedes intentarlo is() . Esto es lo que las funciones de lubridate son. La is.Date y is.POSIX* dependen de todos modos.

x <- Sys.time() class(x) # [1] "POSIXct" "POSIXt" is(x, "Date") #v[1] FALSE is(x, "POSIXct") # [1] TRUE y <- Sys.Date() class(y) # [1] "Date" is(y, "POSIXct") # [1] FALSE is(y, "Date") # [1] TRUE