例如,我尝试了以下方法来创建日期向量,长度为5.无效:
date(5)
Date(5)
vector(5, mode = "Date" )
这有效,但想知道是否有快捷方式?
as.Date( numeric( 5 ) )
另外,我看到该模式(as.Date(“2011-01-01”))是数字,我明白日期的基础数据结构是数字,但假设vector()只有模式和长度在我看来,在没有强制的情况下创建一个Date的向量是不可能的?
编辑
除了长度= 0?
Date = function( length = 0 )
{
newDate = numeric( length )
class(newDate) = "Date"
return(newDate)
}
答案 0 :(得分: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>
并且两者都以相同的方式工作,这很好地说明了为什么面向对象很适合用数据编程。
如你所见,日期有一个基础数字表示(整数代表自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>
答案 1 :(得分:5)
初始化时缺少日期而不是一堆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"