【问题标题】:as.Date returning NA after setting C localeas.Date 在设置 C 语言环境后返回 NA
【发布时间】:2016-11-11 19:12:55
【问题描述】:

我正在尝试设置 C 语言环境,以便当我将字符对象转换为日期时,我不会得到 NA 值。我得到了这个解决方案from this question,但它对我不起作用。当我运行第一条注释行时,

> lct <- Sys.getlocale("LC_TIME"); Sys.setlocale("LC_TIME", "C")

我收到以下警告:

Warning message:
In readLines(outfile) :
  incomplete final line found on 'tmp/Rtmp8AJy9P/Rhttpd9742ffa74dc'
[1] "C"

然后,当我尝试将字符对象转换为日期时,我仍然得到类日期的 NA。

> x <- "2015-02-15"
> z <- as.Date(x, "%Y-%B-%d")
> Sys.Setlocale("LC_TIME", lct)
[1] "en_US.UTF-8"
> z
[1] NA

有谁知道该警告的含义以及它是否会影响我稍后运行的转换?

【问题讨论】:

    标签: r date


    【解决方案1】:

    > x <- "2015-02-15"
    > z <- as.Date(x, "%Y-%B-%d")
    > Sys.Setlocale("LC_TIME", lct)
    [1] "en_US.UTF-8"
    > z
    [1] NA
    

    您的格式错误,因为%B 代表文本的、未缩写的月份。证人:

    R> as.Date("2015-02-15", "%Y-%m-%d")
    [1] "2015-02-15"
    R> as.Date("2015-February-15", "%Y-%B-%d")
    [1] "2015-02-15"
    R> 
    

    所以我认为您的语言环境问题可能会分散注意力。

    【讨论】:

    • 是的,解决了,谢谢!讨厌的日期格式总是搞砸一切。
    • 好好看看我的(相当新的)包anytime,它通过不要求日期和时间格式来努力消除讨厌
    • 感谢您的接受。您也可以投票(点击向上箭头)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-21
    • 1970-01-01
    • 1970-01-01
    • 2017-11-01
    • 2010-09-09
    • 2011-09-20
    相关资源
    最近更新 更多