2016-03-31 10 views
0
start <- as.POSIXct("2016-01-17") 
end <- start + as.difftime(72, units="days") 
for(i in seq(from=start, by=60*60*24*7, to=end)) { 
     print(i) 
} 

Wie die Codes oben zeigen, versuche ich das Datum nach Jahr 2016 innerhalb von 72 Tagen auszudrucken. Die Ausgabe ist jedoch immer Zahlen wie 1453006800. Ich habe versucht alles, was ich denken kann einschließlich as.Date, as.Date (i, origin = "2016-01-17 00:00:00 EST") ... .Vielen Dank!So drucken Sie das Datumsformat von POSIXct in

+1

Try setzen 'Klasse (i) <- Klasse (Start)' 'vor print (i)', erklärt [hier] (http://stackoverflow.com/questions/6434663/loop-over-a-date-objekt-result-in-numeric-iterator) –

+0

Danke soooo viel !! Es funktioniert endlich! – user5843090

Antwort

1

Das Problem hier ist, dass während "Start" und "Ende" POSIX-Datumsobjekte sind, "i" nicht ist. Dies wird durch ihre Strukturen überprüft:

> str(start) 
POSIXct[1:1], format: "2016-01-17" 
> str(i) 
num 1.46e+09 

Sie andere Looping Funktion können Sie statt „für“, das „i“, um numerische zu sein scheint Nötigung. Sie können eine while Schleife wie verwenden:

> i = start 
> while (i < end) { 
i = i + 60*60*24*7 
print(i) 
} 
+0

Vielen Dank für die schnelle Antwort! Lösung von Hadd E. Nuff: Klasse (i) <- Klasse (Start) funktioniert ganz gut! – user5843090

Verwandte Themen