Sys.setlocale:设置区域设置的请求...无法兑现

use*_*626 8 encoding datetime localization r

我正在使用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)
Run Code Online (Sandbox Code Playgroud)

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

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

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

dar*_*zig 11

我很确定你学院的电脑上没有安装"en_GB.UTF-8"语言环境.最简单的方法是安装它:)嗯,这对每个操作系统来说都是微不足道的.

其他选项可以是使用可在每台计算机上找到的标准区域设置.当你的追加例题没有显示出特殊的格式,你可以尝试设置LC_TIMEC,其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"
Run Code Online (Sandbox Code Playgroud)

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