Sys.setlocale:设置区域设置的请求...无法满足

2023-11-21

我在用着strptime(...)在我的包的一个函数中。我需要使用特定的本地设置解析字符串并使用Sys.setlocale作为获取英语本地化设置的解决方法。为了减少副作用,之后会恢复之前的本地设置。 该函数的基本代码片段如下:

#parameter settings
sometext <- "Mon, 14 Mar 2011 23:42:16 GMT"
timeFormat <- "%a, %d %b %Y %H:%M:%S"
timeZone <- "GMT"
#get current locale
loc <- Sys.getlocale("LC_TIME")
#set british localization
dummy <- Sys.setlocale("LC_TIME", "en_GB.UTF-8")
#parse datetime string
time <- strptime(sometext, format = timeFormat, tz= timeZone)
#set local back
dummy <- Sys.setlocale("LC_TIME", loc)

不幸的是,我的一位同事在使用此功能时收到以下警告:

In Sys.setlocale("LC_TIME", "en_GB.UTF-8") :
OS reports request to set locale to "en_GB.UTF-8" cannot be honored

在我的电脑上一切正常。 是否有更好的(并且独立于已安装的 R 本地化)执行此任务的方法?一般来说,我想使用 strptime,因为它允许以非常灵活的方式解析日期时间字符串。


我非常确定您大学的计算机上没有安装“en_GB.UTF-8”语言环境。最简单的方法可能是安装它:) 嗯,这对于每个操作系统来说都不是小事。

其他选项可能是使用每台计算机上都可以找到的标准区域设置。由于您添加的示例没有显示特殊格式,您可以尝试设置LC_TIME to C,它也可以在 Linux 和 Windows 下运行。通过该区域设置,您给出的示例将非常有效。看:

> Sys.setlocale("LC_TIME", "C")
> strptime("Mon, 14 Mar 2011 23:42:16 GMT", format = "%a, %d %b %Y %H:%M:%S", tz="GMT")
[1] "2011-03-14 23:42:16 GMT"

否则,您应该转换您的数据 - 例如:编写一个简短的函数,将所有周和月的名称替换为标准字符串,并将导入的字符串重组为标准字符串。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Sys.setlocale:设置区域设置的请求...无法满足 的相关文章

随机推荐