2017-02-09 26 views
4

我发现自己遇到了一个问题,我无法找到解决方案的线索 - 这使得它非常困难实际上对付它。这里有云:在R(用R-Studio的),我尝试创建一个Date对象库lubridateas.POSIXlt.POSIXct(x,tz)中的错误:(从警告转换而来)未知时区'GMT'

library(lubridate) 
ymd(20161001) 

这将导致一个错误:

Error in as.POSIXlt.POSIXct(x, tz) : (converted from warning) unknown timezone 'GMT'

最后一个命令的第二次运行(以及任何后续运行)会产生正确的结果:

ymd(20161001) 
[1] "2016-01-01" 

直到我重新启动我的R会话,当第一次运行再次触发错误。我检查了几个设置,但找不到任何东西从第一次运行到第二次运行更改。这里有,比如,我sessionInfo()的输出:

R version 3.3.2 (2016-10-31) 
Platform: x86_64-w64-mingw32/x64 (64-bit) 
Running under: Windows 7 x64 (build 7601) Service Pack 1 

locale: 
[1] LC_COLLATE=Dutch_Netherlands.1252 LC_CTYPE=Dutch_Netherlands.1252 LC_MONETARY=Dutch_Netherlands.1252 LC_NUMERIC=C      
[5] LC_TIME=Dutch_Netherlands.1252  

attached base packages: 
[1] stats  graphics grDevices utils  datasets methods base  

other attached packages: 
[1] lubridate_1.6.0 

loaded via a namespace (and not attached): 
[1] magrittr_1.5 tools_3.3.2 stringi_1.1.2 stringr_1.1.0 

Sys.timezone()[1] "Europe/Berlin",并且Sys.getenv('TZ')是空的:""

我确实觉得别人跌倒在同样的警告,如this blogposthere,但这些问题与时间有关,而我宁愿完全忽略时间,只处理日期

+0

尝试检查有效TZ值的列表: 'Sys.setlocale( “LC_TIME”, “英语”)' –

+0

TNX,可惜没有成功。行为依然如此。 – Taeke

+0

@泰克你找到了解决方案吗?我遇到与ymd_hms相同的问题 - 第一个调用引发同样的错误,第二个调用执行得非常好。 – thatWaterGuy

回答

0

今天我得到了同样的错误。我的代码在一个Rmarkdown文件集中输出为一个tufte_html文档。我被加载以下包:

library(lubridate) 
library(tidyverse) 
library(stringr) 
library(extrafont) 
library(extrafontdb) 
library(tufte) 

为了让我的代码工作,我做了以下内容: 首先,我得到了我公司的VPN,怀疑可能是问题,但我仍然得到错误时使用我的家庭WiFi和没有VPN。接下来,我更新了所有的软件包,但仍然出现错误。 然后,我关闭了我的Macbook并重新启动,但仍然出现错误。 最后,我改变了我的脚本不再负载tidyverse作为一个整体,而是负载:

library(lubridate) 
library(tibble) 
library(dplyr) 
library(readr) 
library(extrafont) 
library(extrafontdb) 
library(tufte) 

然后我Rmarkdown文件中呈现无未知时区误差为HTML。不幸的是,我无法确定究竟是什么修正了错误,或者为什么加载部件而不是整个修整过程似乎对我有用。你有没有解决你的问题?


我的会话信息时,它的工作:

R version 3.4.2 (2017-09-28) 
Platform: x86_64-apple-darwin15.6.0 (64-bit) 
Running under: macOS High Sierra 10.13.1 

Matrix products: default 
BLAS: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib 
LAPACK: /Library/Frameworks/R.framework/Versions/3.4/Resources/lib/libRlapack.dylib 

locale: 
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8 

attached base packages: 
[1] stats  graphics grDevices utils  datasets methods base  

other attached packages: 
[1] tufte_0.2  extrafontdb_1.0 extrafont_0.17 stringr_1.2.0 
[5] readr_1.1.1  dplyr_0.7.4  tibble_1.3.4 lubridate_1.7.1 

loaded via a namespace (and not attached): 
[1] Rcpp_0.12.13  Rttf2pt1_1.3.4 knitr_1.17  bindr_0.1  
[5] magrittr_1.5  hms_0.3   R6_2.2.2   rlang_0.1.4  
[9] tools_3.4.2  htmltools_0.3.6 yaml_2.1.14  rprojroot_1.2 
[13] digest_0.6.12 assertthat_0.2.0 bindrcpp_0.2  glue_1.2.0  
[17] evaluate_0.10.1 rmarkdown_1.8 stringi_1.1.6 compiler_3.4.2 
[21] backports_1.1.1 pkgconfig_2.0.1 
+0

不幸的是,我还没有解决这个问题。你的解决方案(或者我应该称之为解决方法?)对我来说似乎相当古怪。我也无法让它工作;无论如何,无论如何我都会得到这个错误,无论我在之前,之后,还是没有它之前加载lubridate。似乎不会对我的系统产生影响。 和你一样,我在我公司的笔记本电脑上收到这个错误。与此同时,我确实收到了带有更新的R /软件包的新笔记本电脑。虽然没有改变这种行为.. – Taeke

0

答案this question为我工作。例如,我将Sys.setenv(TZ='America/Detroit')添加到我的脚本中。

+0

我检查了我的系统,并且确实没有可用的TZ环境变量。不幸的是,设置它并不会改变观察到的行为 - 仍然会得到一个'error()' – Taeke