2015-03-24 55 views
12

Mam pakiet o nazwie CRAN o nazwie UNF, który tworzy skrót nazwy data.frame (do użytku w cytowaniu danych). Mam kilka testów w pakiecie związanych z formatowaniem datetimes (używam testthat). Działają poprawnie w bieżącej wersji R (3.1.3), ale raz przedłożyłem do CRAN, one of these tests fail on "r-oldrel-windows" (3.0.3).Formatowanie Datetime w R3.0.3 i R3.1.3

Mam wytropił różnicy do następującego kodu, co daje różne wyniki w dwóch wersjach R. Oto poprawne wyjście (od 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" 

A oto wyjście z 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] "" 

Jak widać, wyjście strftime jest pusty ciąg znaków, a nie ISO 8601 sformatowane daty. Czy jest jakiś pomysł na zmianę między tymi dwiema wersjami? I jak mogę to poprawić? Lub, w jaki sposób mogę uniknąć niepowodzenia testów w CRAN?

Odpowiedz

2

Jest możliwe, że% F nie było opcją we wcześniejszych wersjach R. Więc kod bazowy ignoruje ciąg, więc formatuje się jako pusty ciąg. Próbowałem użyć litery nie w bieżącej pomocy i zwraca ciąg znaków z tą literą, a nie datą.

Thomas, istnieje funkcja skip() w funkcji testthat i skip_on_CRAN.

  1. Spójrz na pomoc

    ?testthat::skip_on_cran 
    
  2. wbeasley ma some test code, które mogą Ci pomóc. (Zobacz pomocne komentarze w tej odpowiedzi dla Rappster w 25595487). Zobaczysz, jak umieszcza to polecenie pominięcia w nawiasie funkcji testu. Parafrazując go poniżej:

    library(testthat)   
    
    testthat("example"),{ 
        testthat::skip_on_cran() 
        # test code below 
        x <-2 
        expect_equal(x,2) 
    }) 
    
  3. To może być rzecz systemu operacyjnego z systemem Windows. Zrobiłem jeszcze kilka wykopów - Spójrz na to opisujące R 3.0.2. http://www.inside-r.org/r-doc/base/strftime

    Dokumenty ostrzegają przed niektórymi problemami z niektórymi flagami w systemie Windows. Cytując (mój pogrubione):

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

% C wieku (00--99): część całkowita roku podzieloną przez 100.

...

% F Odpowiednik% Y% m-% d (dzień formacie ISO 8601).

...

Nadzieja to pomaga!

+0

Tak, to było to. '% F' nie było wcześniej obsługiwane jako format wyjściowy w systemie Windows. Dzięki! – Thomas