2015-06-20 64 views
3

是否可以在r中创建一个空的日期向量?如何创建日期的空向量?

我可以创造一个整数空载体,双打,逻辑值等:

> integer() 
integer(0) 
> double() 
numeric(0) 
> logical() 
logical(0) 
> length(integer()) 
[1] 0 

但这个说法并不对日期的工作,作为date()返回当前系统日期和时间。那么,我将如何创建一个日期的emtpy向量?

+3

检查[这里](http://stackoverflow.com/questions/10689055/create-an-empty-data-frame) – akrun

+0

我不知道'date'函数可能来自哪里,但它并不是一个“基础”函数。 –

回答

4

只需添加一个类属性的长度0整数,它是一个日期(至少它会显示为一个,如果你有当解释为R-日期是有意义的值扩展它):

> x <- integer(0) 
> x 
integer(0) 
> class(x) <- "Date" 
> x 
character(0) 
> class(x) 
[1] "Date" 
> y <- c(x, 1400) 
> y 
[1] "1973-11-01" 

as.Date的输出恰好是一个字符值,所以第一个调用有点让人误解。

> as.Date(integer()) 
character(0) 
> str(as.Date(integer())) 
Class 'Date' num(0) 
> dput(as.Date(integer())) 
structure(numeric(0), class = "Date") 
+0

在我的情况:'> as.Date(x = integer(0))'返回一个错误:'asDate.numeric(x = integer(0))中的错误:必须提供'origin'。我必须提供原点:'as.Date(x = integer(0),origin =“1970-01-01”)'工作! – PAC

+1

这不是我演示的方法,它继续成功。 'as.Date(integer())'的行为似乎已经改变了。它现在返回您演示的错误。我无法在NEWS文件中找到解释这一变化的条目。 –

5

随着最新版本的R,你必须提供产地:

as.Date(x = integer(0), origin = "1970-01-01") 
0

使用lubridate包,并决定您的预期格式是什么,你可以(如YYYY/MM/DD。)用途:

lubridate::ymd() 
# or 
lubridate::mdy()