2015-03-24 5 views
12

J'ai un paquet sur CRAN appelé UNF, qui crée un hachage de data.frame (pour utilisation dans la citation de données). J'ai quelques tests dans le paquet liés à la mise en forme de datetimes (j'utilise testthat). Ils fonctionnent correctement sur la version actuelle de R (3.1.3), mais une fois que j'ai soumis à CRAN, one of these tests fail on "r-oldrel-windows" (3.0.3).Mise en forme de la date en R3.0.3 et R3.1.3

J'ai traqué la différence au code suivant, ce qui donne des résultats différents dans les deux versions de R. Voici la sortie correcte (de 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" 

Et est ici la sortie 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] "" 

Comme vous pouvez le voir, la sortie de strftime est une chaîne de caractères vide plutôt que ISO 8601 date formatée. Une idée de ce que le changement était entre ces deux versions? Et comment puis-je corriger cela? Ou, comment puis-je éviter que les tests échouent sur CRAN?

Répondre

2

Il est possible que% F ne soit pas une option dans les versions antérieures de R. Ainsi, le code de base ignore la chaîne afin de la formater en tant que chaîne vide. J'ai essayé d'utiliser une lettre qui ne figure pas dans l'aide en cours et elle renvoie une chaîne avec cette lettre et non une date. Thomas, il y a une fonction skip() dans testthat et skip_on_CRAN fonctionnalité.

  1. Jetez un oeil à l'aide

    ?testthat::skip_on_cran 
    
  2. wbeasley a some test code qui peut vous aider. (Voir ses commentaires utiles dans cette réponse à Rappster dans 25595487). Vous verrez comment il place cette commande de saut à l'intérieur du test qui relie les crochets. Paraphrasant ci-dessous:

    library(testthat)   
    
    testthat("example"),{ 
        testthat::skip_on_cran() 
        # test code below 
        x <-2 
        expect_equal(x,2) 
    }) 
    
  3. Il est peut-être une chose du système d'exploitation avec Windows. Faire un peu plus de creuser a révélé ceci - Jetez un coup d'oeil à ce qui décrit R 3.0.2. http://www.inside-r.org/r-doc/base/strftime

    Les docs préviennent de certains problèmes avec certains indicateurs% dans Windows. Citant (mon gras):

également définis dans les normes en vigueur, mais moins largement mis en œuvre (par exemple pas pour la sortie sur Windows) sont

% C siècle (00 à -99): la partie entière de l'année divisée par 100.

...

% F% équivalent à Y-% m-% d (le format de date ISO 8601).

...

Hope this helps!

+0

Ouais, c'était tout. '% F' n'était pas précédemment supporté comme format de sortie sous Windows. Merci! – Thomas