2015-06-20 65 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()