为什么lubridate :: ymd_hms函数在" silent"时会添加NA观察值。参数设置为TRUE?

时间:2017-10-12 09:11:58

标签: r lubridate

任何人都可以解释为什么"沉默= T"参数触发警告和NA观察,并告诉我如何避免这种情况?

x <- c("2010-04-14-04-35-59", "20100401120000")
ymd_hms(x, silent=T)
[1] "2010-04-14 04:35:59 UTC" "2010-04-01 12:00:00 UTC" NA                       

Warning message:
1 failed to parse. 

R版本3.4.0,lubridate版本1.6.0

2 个答案:

答案 0 :(得分:1)

这里,lubridate尝试将"silent=T"评估为日期格式,即删除消息的参数。

lubridate::ymd_hms(x, quiet=TRUE)
[1] "2010-04-14 04:35:59 UTC" "2010-04-01 12:00:00 UTC" 

这是因为你可以在一个lubridate函数中传递vector:

x <- c("2010-04-14-04-35-59", "20100401120000")
y <- c("2010-04-14-04-35-59", "20100401120000")
z <- c("2010-04-14-04-35-59", "20100401120000")

lubridate::ymd_hms(x, y, z)
[1] "2010-04-14 04:35:59 UTC" "2010-04-01 12:00:00 UTC"
[3] "2010-04-14 04:35:59 UTC" "2010-04-01 12:00:00 UTC"
[5] "2010-04-14 04:35:59 UTC" "2010-04-01 12:00:00 UTC"

所以在这里,使用silent=T,你告诉lubridate silent=T是一个要解析的向量。因此NA。

答案 1 :(得分:0)

在格式不同的情况下,我遇到了这个问题。请注意所有日期都遵循相同的格式。使用parse_date_time()可以解决此问题。

parse_date_time(df$date, c("y/m/d","y/m/d HMS","m/d/y","m/d/y HM"))

请确保列表中包含日期格式。