如何在R中添加小数倍?

max*_*oku 5 datetime r lubridate

我有这种格式的大量日期:

dt = as.POSIXct("2004-04-02 12:45:00 UTC")
Run Code Online (Sandbox Code Playgroud)

我必须添加/减去可能并不总是整数的数字.我正在使用lubridate库.

例:

 dt - days(2)
[1] "2004-03-31 12:45:00 UTC"
Run Code Online (Sandbox Code Playgroud)

但,

dt - days(1.5)
Error in validObject(.Object) : 
  invalid class “Period” object: periods must have integer values
Run Code Online (Sandbox Code Playgroud)

这个操作有替代方案吗?

eip*_*i10 7

发生错误days(1.5),不允许分数周期.你可以这样做:

dt - days(1) - hours(12)
Run Code Online (Sandbox Code Playgroud)

要么

dt - 1.5*24*3600
Run Code Online (Sandbox Code Playgroud)

或者可能有一个基准日期功能,像@DirkEddelbuettel这样的人知道这也会起作用.啊,这是difftime(我没有足够的日期来记住我头顶的这些东西).

dt - as.difftime(1.5, units="days")
Run Code Online (Sandbox Code Playgroud)

而且,正如@maximusdooku所指出的那样:

dt - ddays(1.5)
Run Code Online (Sandbox Code Playgroud)

(根据代码,它看起来ddays只是返回请求的时间段内的秒数,加上一些类信息.)