R - 如何声明Date的向量?

时间:2011-07-21 13:49:30

标签: r

例如,我尝试了以下方法来创建日期向量,长度为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)
}

2 个答案:

答案 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"