Подтвердить что ты не робот

Форматирование даты и времени в R3.0.3 и R3.1.3

У меня есть пакет на CRAN под названием UNF, который создает хэш data.frame (для использования в цитировании данных). У меня есть некоторые тесты в пакете, связанные с форматированием datetimes (я использую testthat). Они корректно работают с текущей версией R (3.1.3), но как только я отправил CRAN, один из этих тестов завершился неудачей на "r-oldrel-windows" (3.0.3).

Я проследил разницу с следующим кодом, который дает разные результаты в двух версиях R. Здесь правильный вывод (из 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"

И здесь вывод из 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] ""

Как вы можете видеть, вывод strftime представляет собой пустую строку символов, а не форматированную дату ISO 8601. Любая идея, какое изменение было между этими двумя версиями? И как я могу это исправить? Или, как я могу избежать неудачных тестов на CRAN?

4b9b3361

Ответ 1

Возможно, что% F не был вариантом в более ранних версиях R. Таким образом, базовый код игнорирует строку, поэтому она форматируется как пустая строка. Я попытался использовать письмо не в текущей справке, и он возвращает строку с этой буквой, а не дату.

Томас, есть функция skip() в функциях testthat и skip_on_CRAN.

  • Посмотрите на помощь

    ?testthat::skip_on_cran
    
  • wbeasley имеет некоторый тестовый код, который может вам помочь. (См. Его полезные комментарии в этом ответе Рапстеру в 25595487). Вы увидите, как он помещает эту команду пропусков внутри скобок функций testthat. Перефразируя его ниже:

    library(testthat)        
    
    testthat("example"),{
      testthat::skip_on_cran()
      # test code below
      x <-2
      expect_equal(x,2)
    })
    
  • Это может быть ОС с Windows. Проделать еще кое-что выкопало это. Посмотрите на это, описывая R 3.0.2. http://www.inside-r.org/r-doc/base/strftime

    Документы предупреждают о некоторых проблемах с некоторыми флагами% в Windows. Цитирование (жирный шрифт):

Также определены в текущих стандартах, но менее широко реализованы (например, не для вывода в Windows):

% C Century (00--99): целая часть года, деленная на 100.

...

% F Эквивалент% Y-% m-% d (формат даты ISO 8601).

...

Надеюсь, это поможет!