5

我是 R 新手。我在工作中使用 Windows PC,在家中使用 Ubuntu Linux。我试图弄清楚为什么我的代码在 Windows R 中不起作用。我试图找到给定日期的星期几(数字)。使用formatformat(Sys.time(), "%u")
它适用于 Linux 而不是 Windows?我错过了什么吗,我从两台 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 上)的记录行为。

有关详细信息,请参阅?strptime(我知道,可能不是您可能想到的第一个地方;-),它记录了 R 中可用的日期时间转换规范。在Details下,所有操作系统上找到的规范的初始列表后跟一个部分内容如下:

在当前标准中也有定义,但实施较少(例如,不用于 Windows 上的输出)是

'%C' Century (00-99):年份的整数部分除以 100。

[ . . . 许多剪断的线条。. .]

'%u' 以十进制数表示的工作日(1-7,星期一为 1)。

[ . . . 更多的剪断线。. .]

最接近的替代品format是:

%w 工作日为十进制数(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 回答