2015-03-24 13 views
12

Ich habe ein Paket auf CRAN namens UNF, die einen Hash von data.frame erstellt (für die Verwendung in Datenzitat). Ich habe einige Tests im Paket zur Formatierung von Datumsangaben (ich benutze testthat). Sie funktionieren korrekt auf der aktuellen Version von R (3.1.3), aber sobald ich an CRAN, one of these tests fail on "r-oldrel-windows" (3.0.3).Datetime Formatierung in R3.0.3 und R3.1.3

Ich habe den Unterschied zu dem folgenden Code aufgespürt, die unterschiedlichen Ergebnisse in den beiden Versionen von R. Hier ist die korrekte Ausgabe (ab 3.1.3) ergibt:

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" 

Und hier ist die Ausgabe von 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] "" 

Wie Sie sehen können, ist die Ausgabe von strftime eine leere Zeichenkette, statt ein ISO 8601 formatiert Datum. Irgendeine Idee, was die Veränderung zwischen diesen beiden Versionen war? Und wie kann ich das korrigieren? Oder wie kann ich vermeiden, dass die Tests auf CRAN fehlschlagen?

Antwort

2

Es ist möglich, dass% F in früheren Versionen von R keine Option war. Daher ignoriert der Basiscode die Zeichenfolge, sodass sie als leere Zeichenfolge formatiert wird. Ich habe versucht, einen Buchstaben zu verwenden, der nicht in der aktuellen Hilfe steht, und er gibt eine Zeichenfolge mit diesem Buchstaben zurück, kein Datum.

Thomas, gibt es eine skip() Funktion in testthat und skip_on_CRAN Funktionalität.

  1. bei

    Hilfe Werfen Sie einen Blick
    ?testthat::skip_on_cran 
    
  2. wbeasley hat some test code die Ihnen helfen können. (Siehe seine hilfreichen Kommentare in dieser Antwort zu Rappster in 25595487). Sie werden sehen, wie er diesen Skip-Befehl in den Test einfügt, der Klammern verwendet. Paraphrasiert hier ein:

    library(testthat)   
    
    testthat("example"),{ 
        testthat::skip_on_cran() 
        # test code below 
        x <-2 
        expect_equal(x,2) 
    }) 
    
  3. Es könnte ein Betriebssystem, was unter Windows sein. Ein paar weitere Grabungen haben gezeigt, dass dies - Werfen Sie einen Blick auf diese Beschreibung von R 3.0.2. http://www.inside-r.org/r-doc/base/strftime

    Die Dokumentation warnt vor einigen Problemen mit einigen% Flags in Windows. Zitiert (mein fett):

Auch in den aktuellen Standards definiert, aber weniger weitgehend umgesetzt (zB nicht für die Ausgabe auf Windows) sind

% C Jahrhundert (00--99): der ganzzahlige Teil des Jahres durch 100 dividiert

...

% F Entspricht% Y-% m-% d (ISO 8601-Format).

...

hoffe, das hilft!

+0

Ja, das war es. '% F' wurde bisher nicht als Ausgabeformat unter Windows unterstützt. Vielen Dank! – Thomas