2016-07-11 5 views
0

Ich möchte in einer Funktion die folgenden Zeile verwendenWie erstelle ich einen Vektor von mode = ‚Datum‘

datehit <- vector(mode="Date",length(vectordiagdate)) 

aber ich erhalte einen Fehler

> Error in vector(mode = "Date", length(vectordiagdate)) : 
    vector: cannot make a vector of mode 'Date'. 

Ich werde die Daten später verwenden mit datediff.

Was ist falsch, und gibt es einen Workaround?

Antwort

1

Es gibt keinen Speichermodus von Date.

Datum ist ein class:

date.vec <- seq(Sys.Date(), Sys.Date()+10, 1) # date vector example 
mydate <- as.Date("1970-01-01") # class conversion from character to date 

Ihrem Beispiel verwenden (lose):

as.vector(data.frame(x = seq(Sys.Date(),Sys.Date()+10,1)), mode = "list") 
  x 
1 2016-07-11 
2 2016-07-12 
3 2016-07-13 
4 2016-07-14 
5 2016-07-15 
6 2016-07-16 
7 2016-07-17 
8 2016-07-18 
9 2016-07-19 
10 2016-07-20 
11 2016-07-21 
datehit <- as.Date(datehit$x) 

Gültige Speicherarten sind:

  • "logische"
  • "integer"
  • "double"
  • "Komplex"
  • "raw"
  • "Charakter"
  • "Liste"
  • "Ausdruck"
  • "Name"
  • "Symbol"
  • „Funktion“
+0

Sie haben ein paar verpasst. Siehe "? Typeof", auf dem sowohl "mode" als auch "storage.mode" basieren –

0

Wenn Sie etwas ähnliches zu wollen, wie man oft verwendet vector(), als Template-Objekt zu füllen, dann könnte man

as.Date(rep(NA, length = 10)) 

> (foo <- as.Date(rep(NA, length = 10))) 
[1] NA NA NA NA NA NA NA NA NA NA 
> class(foo) 
[1] "Date" 

verwenden wir nicht NULL als das Objekt an rep als das wirft eine Warnung, uns als as.Date Chokes auf NULL zu ärgern.

Verwandte Themen