R 有 is.vector
, is.list
, is.integer
, is.double
, is.numeric
, is.factor
, is.character
等为什么没有is.POSIXct
, is.POSIXlt
或 is.Date
?
我需要一种可靠的方法来检测 POSIXct
对象,和 class(x)[1] == "POSIXct"
看起来真的……很脏。
最佳答案
我个人只会使用 inherits
如 joran建议。您可以使用它来创建您自己的 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
关于检测 data.frame 中的列是否为 .POSIXct 的可靠方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26412947/