2013-09-22 10 views
5

Jestem nowy dla R. Mam komputer z systemem Windows w pracy i Ubuntu Linux w domu. Próbuję dowiedzieć się, dlaczego mój kod nie działa w Windows R. Próbuję znaleźć dzień (numerycznie) tygodnia dla danej daty. Używanie w formacie, format(Sys.time(), "%u")
Działa w systemie Linux, a nie w systemie Windows? Czy brakuje mi czegoś, dodałem prosty kod i informacje o sesji z obu komputerów.Format do znalezienia dnia tygodnia nie działa w systemie Windows

Wyjście z moim Windows 7 PC z R 3,01

sessionInfo() 
R version 3.0.1 (2013-05-16) 
Platform: x86_64-w64-mingw32/x64 (64-bit) 
locale: 
[1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United States.1252  
LC_MONETARY=English_United States.1252 LC_NUMERIC=C       
[5] LC_TIME=English_United States.1252  
attached base packages: 
[1] stats  graphics grDevices utils  datasets methods base 

format(Sys.time(), "%u") 
[1] "" 

Sys.time() 
[1] "2013-09-22 10:34:00 CDT" 

wyjść z mojego Linux PC z R 3,01

sessionInfo() 
R version 3.0.1 (2013-05-16) 
Platform: x86_64-pc-linux-gnu (64-bit) 
locale: 
[1] LC_CTYPE=en_US.UTF-8  LC_NUMERIC=C    
[3] LC_TIME=en_US.UTF-8  LC_COLLATE=en_US.UTF-8  
[5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 
[7] LC_PAPER=C     LC_NAME=C     
[9] LC_ADDRESS=C    LC_TELEPHONE=C    
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C  
attached base packages: 
[1] stats  graphics grDevices utils  datasets methods base  
loaded via a namespace (and not attached) 
[1] tools_3.0.1 

format(Sys.time(),"%u") 
[1] "7" 

Sys.time() 
[1] "2013-09-22 10:34:15 CDT" 

Odpowiedz

7

to R (w systemie Windows) to udokumentowane zachowanie .

Szczegółowe informacje ?strptime (wiem, prawdopodobnie nie pierwsze miejsce można by pomyśleć wyglądać ;-) który dokumentuje specyfikacje konwersji data-czas dostępny w R. Pod Szczegóły, wstępny wykaz specyfikacji znajduje się na wszystkich systemów operacyjnych jest po odcinku, który brzmi:

zdefiniowane także w obecnych standardów, ale mniej powszechnie stosowane (np nie do wyjścia w systemie Windows) są

„% c” wieku (00-99) : część całkowita roku podzielona przez 100.

[. . . wiele przecinanych linii. . .]

'% u' Dzień tygodnia jako liczba dziesiętna (1-7, poniedziałek to 1).

[. . . więcej wyciętych linii. . .]

Najbliższe zamienników format są:

% wag Dzień tygodnia jako liczba dziesiętna (0-6 niedzieli 0).

% a Skrócona nazwa dnia tygodnia w bieżącym języku. (Pasuje również do pełnej nazwy na wejściu.)

% Pełna nazwa dnia tygodnia w bieżącym języku. (Również mecze skrócie nazwisko na wejściu.)

+0

Dzięki, @BlueMagister, za wspaniałą edycję. –

+0

Dzięki Josh, Blue i Henrik. Próbowałem zarówno% w i ISOweekday i obu prac. –

5

Można sprawdzić działanie ISOweekday() w pakiecie ISOweek:
„Funkcja ta zwraca dzień tygodnia w danym terminie, zgodnie z ISO 8601. Jest to substytut dla” % u "format, który nie jest zaimplementowany w systemie Windows."

ISOweekday("2013-09-24 01:42:23") 
# [1] 2