使用数据帧时,Strptime 失败

Strptime fails when working with a dataframe

在这种情况下,Strptime 似乎遗漏了一些东西:

aDateInPOSIXct <- strptime("2018-12-31", format = "%Y-%m-%d")
someText <- "asdf"
df <- data.frame(aDateInPOSIXct, someText, stringsAsFactors = FALSE)
bDateInPOSIXct <- strptime("2019-01-01", format = "%Y-%m-%d")

df[1,1] <- bDateInPOSIXct

将 bDate 分配给数据帧失败并显示:

Error in as.POSIXct.numeric(value) : 'origin' must be supplied

还有一个警告:

provided 11 variables to replace 1 variables

我想同时使用 POSIXct 日期和 POSIXct 日期时间来比较这个和那个。它比处理字符串要简单得多——而且 POSIX 会处理时区问题。不幸的是,我错过了一些东西。

您只需将对 strptime 的调用显式转换为 POSIXct

aDateInPOSIXct <- as.POSIXct(strptime("2018-12-31", format = "%Y-%m-%d"))
someText <- "asdf"
df <- data.frame(aDateInPOSIXct, someText, stringsAsFactors = FALSE)
bDateInPOSIXct <- as.POSIXct(strptime("2019-01-01", format = "%Y-%m-%d"))

df[1,1] <- bDateInPOSIXct

检查 R documentation 上面写着:

Character input is first converted to class "POSIXlt" by strptime: numeric input is first converted to "POSIXct".