5

私はRを初めて使用します。職場にはWindows PCがあり、自宅にはUbuntu Linuxがあります。Windows R でコードが機能しない理由を理解しようとしています。特定の日付の曜日 (数値) を見つけようとしています。formatを使用すると、format(Sys.time(), "%u")
Windows ではなく Linux で動作しますか? 何か不足していますか?両方の PC から簡単なコードとセッション情報を追加しました。

R 3.01 を使用した Windows 7 PC からの出力

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"

R 3.01 を使用した LINUX PC からの出力

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" 
4

2 に答える 2

7

これは R (Windows 上) の文書化された動作です。

詳細については、?strptimeR で利用可能な日時変換仕様を文書化した (私が知っている、おそらくあなたが最初に見る場所ではないかもしれません ;-) を参照してください。Detailsの下で、すべての OS で見つかった仕様の最初のリストの後にセクションが続きます。それは次のとおりです。

また、現在の標準で定義されていますが、あまり広く実装されていません (たとえば、Windows での出力用ではありません)。

'%C' 世紀 (00-99): 年の整数部分を 100 で割った値。

[ . . . 多くの切り取られた行。. .]

'%u' 10 進数としての曜日 (1 から 7、月曜日は 1)。

[ . . . さらに切り取られた行。. .]

最も近い代替物は次のformatとおりです。

%w 10 進数としての平日 (0 ~ 6、日曜日は 0)。

%a 現在のロケールでの省略された曜日名。(入力時の氏名にも一致します。)

%A 現在のロケールでの完全な曜日名。(入力の省略名にも一致します。)

于 2013-09-22T23:17:43.533 に答える
5

ISOweekday()パッケージ内の関数を確認できますISOweek:
"この関数は、ISO 8601 に従って、指定された日付の曜日を返します。これは、Windows に実装されていない "%u" 形式の代替です。"

ISOweekday("2013-09-24 01:42:23")
# [1] 2
于 2013-09-22T23:32:21.963 に答える