2013-09-22 87 views
5

Tôi mới sử dụng R. Tôi có PC Windows tại nơi làm việc và Ubuntu Linux ở nhà. Tôi cố gắng tìm ra lý do tại sao mã của tôi không hoạt động trong windows R. Tôi đang cố tìm ngày (số) trong tuần cho một ngày nhất định. Sử dụng định dạng , format(Sys.time(), "%u")
Nó hoạt động trong Linux không phải trên Windows? Tôi thiếu một cái gì đó, tôi đã thêm một mã đơn giản và thông tin phiên từ cả hai máy tính.Định dạng để tìm ngày trong tuần không hoạt động trong Windows

Output từ máy tính Windows 7 của tôi với 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" 

Output từ PC LINUX tôi với 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" 

Trả lời

7

Đây là R (trên Windows) 's hành vi tài liệu .

Để biết chi tiết, xem ?strptime (Tôi biết, có lẽ không phải là nơi đầu tiên bạn có thể nghĩ rằng nhìn ;-) mà tài liệu thông số kỹ thuật chuyển đổi ngày thời gian có sẵn trong R. Theo Chi tiết, một danh sách ban đầu của chi tiết kỹ thuật được tìm thấy trên tất cả các hệ điều hành được theo sau là một phần mà đọc:

Cũng theo quy định tại các tiêu chuẩn hiện hành nhưng ít được thực hiện rộng rãi (ví dụ không cho sản lượng trên Windows) là

'% C' thế kỷ (00-99) : phần nguyên của năm chia cho 100.

[. . . nhiều đường bị đứt. . .]

‘% u’ Ngày trong tuần dưới dạng số thập phân (1-7, Thứ Hai là 1).

[. . . nhiều đường bị đứt. . .]

Các sản phẩm thay thế gần gũi nhất trong format là:

% w Weekday như số thập phân (0-6, Chủ Nhật là 0).

% Tên ngày trong tuần viết tắt trong ngôn ngữ hiện tại. (Cũng khớp với tên đầy đủ trên đầu vào.)

% Tên đầy đủ ngày trong tên miền hiện tại. (Ngoài ra trận đấu được viết tắt tên trên đầu vào.)

+0

Xin cảm ơn, @BlueMagister, vì bản chỉnh sửa tuyệt vời. –

+0

Cảm ơn Josh, Blue và Henrik. Tôi đã thử cả% w và ISOweekday và cả hai đều hoạt động. –

5

Bạn có thể kiểm tra các chức năng ISOweekday() trong gói ISOweek:
"Hàm này trả về các ngày trong tuần của một ngày nhất định theo tiêu chuẩn ISO 8601. Đây là một thay thế cho" % u "định dạng không được triển khai trên Windows."

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