gpt4 book ai didi

r - R3.0.3 和 R3.1.3 中的日期时间格式

转载 作者:行者123 更新时间:2023-12-04 01:13:29 25 4
gpt4 key购买 nike

我在 CRAN 上有一个名为 UNF 的包,它创建了一个 data.frame 的哈希值。 (用于数据引用)。我在包中有一些与日期时间格式相关的测试(我正在使用 testthat)。它们在当前版本的 R (3.1.3) 上正常工作,但是一旦我提交给 CRAN,one of these tests fail on "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 上测试失败?

最佳答案

有可能 %F 在早期版本的 R 中不是一个选项。因此基本代码忽略了该字符串,因此将其格式化为空字符串。我尝试使用不在当前帮助中的字母,它返回一个带有该字母而不是日期的字符串。

托马斯,有一个 skip() testthat 和 skip_on_CRAN 功能中的函数。

  • 看看帮助
    ?testthat::skip_on_cran
  • wbeasley 有 some test code这可能对您有所帮助。 (请参阅他在 25595487 中对 Rappster 的回答中的有用评论)。您将看到他如何将这个跳过命令放在括号中的测试中。转述如下:
    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 中某些 % 标志的一些问题。引用(我的粗体):

  • Also defined in the current standards but less widely implemented (e.g. not for output on Windows) are

    %C Century (00--99): the integer part of the year divided by 100.

    ...

    %F Equivalent to %Y-%m-%d (the ISO 8601 date format).

    ...



    希望这可以帮助!

    关于r - R3.0.3 和 R3.1.3 中的日期时间格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29230071/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com