例如,我尝试了以下内容来创建日期向量,长度为5.无工作:
date(5)
Date(5)
vector(5, mode = "Date" )
Run Code Online (Sandbox Code Playgroud)
这有效,但想知道是否有快捷方式?
as.Date( numeric( 5 ) )
Run Code Online (Sandbox Code Playgroud)
另外,我看到该模式(as.Date("2011-01-01"))是数字,我知道日期的基础数据结构是数字,但假设vector()只有一个模式和长度参数,它在我看来,在没有强制的情况下创建一个Date矢量是不可能的?
编辑
这也是一个解决方案,除了长度= 0?
Date = function( length = 0 )
{
newDate = numeric( length )
class(newDate) = "Date"
return(newDate)
}
Run Code Online (Sandbox Code Playgroud)
Dir*_*tel 17
您可以使用序列,或者只是添加:
R> seq( as.Date("2011-07-01"), by=1, len=3)
[1] "2011-07-01" "2011-07-02" "2011-07-03"
R> as.Date("2011-07-01") + 0:2
[1] "2011-07-01" "2011-07-02" "2011-07-03"
R>
Run Code Online (Sandbox Code Playgroud)
并且两者都以相同的方式工作,这很好地说明了为什么面向对象很适合使用数据进行编程.
正如你所看到的,日期有一个基础数字表示(整数表示自Unix时间开始以来的天数,也就是1970年1月1日),但它也有一个类属性,它使格式化,算术,......表现它在R中利用调度机制的方式
编辑:同样,您也可以从标准向量开始并将其转换为Date对象:
R> x <- 1:3
R> class(x) <- "Date"
R> x
[1] "1970-01-02" "1970-01-03" "1970-01-04"
R>
Run Code Online (Sandbox Code Playgroud)
要初始化缺少日期而不是一堆1970-01-01s:
(x = structure(rep(NA_real_, 10 ), class="Date"))
# [1] NA NA NA NA NA NA NA NA NA NA
class(x)
# [1] "Date"
Run Code Online (Sandbox Code Playgroud)