2015-03-24 16 views
12

Tôi có một gói trên CRAN được gọi là UNF, tạo ra một mã băm của data.frame (để sử dụng trong trích dẫn dữ liệu). Tôi có một số xét nghiệm trong gói liên quan đến định dạng của datetimes (Tôi đang sử dụng testthat). Chúng hoạt động chính xác trên phiên bản hiện tại của R (3.1.3), nhưng sau khi tôi gửi cho CRAN, one of these tests fail on "r-oldrel-windows" (3.0.3).Định dạng ngày giờ trong R3.0.3 và R3.1.3

Tôi đã theo dõi xuống phần chênh lệch để đoạn mã sau, trong đó sản lượng kết quả khác nhau trong hai phiên bản của R. Đây là đầu ra chính xác (từ 3.1.3):

x = strptime("2014-08-22T16:51:05Z", "%FT%H:%M:%OSZ", tz="UTC") 
x 
# [1] "2014-08-22 16:51:05 UTC" 
strftime(x, "%F") 
# [1] "2014-08-22" 

Và đây là kết quả từ 3.0.3:

x = strptime("2014-08-22T16:51:05Z", "%FT%H:%M:%OSZ", tz="UTC") 
x 
# [1] "2014-08-22 16:51:05 UTC" 
strftime(x, "%F") 
# [1] "" 

Như bạn có thể thấy, đầu ra của strftime là một chuỗi ký tự trống chứ không phải là một tiêu chuẩn ISO 8601 ngày định dạng. Bất kỳ ý tưởng gì về sự thay đổi giữa hai phiên bản này? Và làm thế nào tôi có thể sửa lỗi này? Hoặc, làm thế nào tôi có thể tránh các bài kiểm tra thất bại trên CRAN?

Trả lời

2

Có thể% F không phải là tùy chọn trong các phiên bản trước của R. Vì vậy, mã cơ sở bỏ qua chuỗi để nó định dạng dưới dạng chuỗi rỗng. Tôi đã cố gắng bằng cách sử dụng một lá thư không có trong sự giúp đỡ hiện tại và nó trả về một chuỗi với lá thư đó không phải là một ngày.

Thomas, có chức năng skip() trong chức năng testthat và skip_on_CRAN.

  1. Hãy nhìn vào sự giúp đỡ

    ?testthat::skip_on_cran 
    
  2. wbeasleysome test code có thể hỗ trợ bạn. (Xem ý kiến ​​hữu ích của mình trong câu trả lời này cho Rappster trong 25595487). Bạn sẽ thấy cách anh ta đặt lệnh bỏ qua này bên trong các dấu ngoặc hàm testthat. Diễn giải nó bên dưới:

    library(testthat)   
    
    testthat("example"),{ 
        testthat::skip_on_cran() 
        # test code below 
        x <-2 
        expect_equal(x,2) 
    }) 
    
  3. Đây có thể là điều hệ điều hành với Windows. Làm một số việc đào bới thêm tiết lộ điều này - Hãy xem điều này mô tả R 3.0.2. http://www.inside-r.org/r-doc/base/strftime

    Tài liệu cảnh báo một số vấn đề với một số% cờ trong Windows. Trích dẫn (đậm của tôi):

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 Century (00--99): phần nguyên của năm chia cho 100.

...

% F Tương đương với% Y-% m-% d (định dạng ngày theo tiêu chuẩn ISO 8601).

...

Hope this helps!

+0

Yup, đúng vậy. '% F' trước đó không được hỗ trợ dưới dạng định dạng đầu ra trên Windows. Cảm ơn! – Thomas

Các vấn đề liên quan