Ошибка в as.POSIXlt.POSIXct(x, tz): (преобразовано из предупреждения) неизвестный часовой пояс 'GMT'

Я столкнулся с проблемой, для которой я не могу найти ключ к решению, что очень затрудняет ее решение. Вот: в R (с R-Studio) я пытаюсь создать объект Date с помощью библиотека lubridate:

library(lubridate)
ymd(20161001)

что приводит к ошибке:

Ошибка в as.POSIXlt.POSIXct(x, tz): (преобразовано из предупреждения) неизвестный часовой пояс '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') пусто: ""

Я нахожу, что другие натыкаются на такое же предупреждение, например это сообщение в блоге или здесь, но эти проблемы связаны с временем, тогда как я бы предпочел вообще игнорировать время и иметь дело с датами только.


person Taeke    schedule 09.02.2017    source источник
comment
попробуй: Sys.setlocale("LC_TIME","English")   -  person Zahiro Mor    schedule 09.02.2017
comment
Tnx, но к сожалению не получилось. Поведение остается прежним.   -  person Taeke    schedule 09.02.2017
comment
@Taeke ты нашел решение? У меня такая же проблема с ymd_hms - первый вызов выдает ту же ошибку, второй вызов выполняется отлично.   -  person thatWaterGuy    schedule 20.09.2017
comment
Нет, к сожалению, я еще не нашел решения. Если вы найдете решение, я был бы рад услышать о нем! Извините за поздний ответ..   -  person Taeke    schedule 20.10.2017
comment
Вы можете попробовать anytime::anydate(20161001), который отлично работает. Date объекты не имеют часовых поясов, поэтому ошибка не должна возникать в первую очередь...   -  person Dirk Eddelbuettel    schedule 21.11.2017
comment
У меня была точно такая же проблема с пакетом смазки. После установки системного времени Sys.setenv(TZ='GMT') я добавил tz=GMT в dmy dmy(pulver420w$Date ,tz="GMT"), и все заработало.   -  person MarBlo    schedule 10.02.2018


Ответы (3)


Я получил ту же ошибку сегодня. Мой код находился в файле Rmarkdown, настроенном для вывода в виде документа tufte_html. Я загружал следующие пакеты:

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

Чтобы заставить мой код работать, я сделал следующее: во-первых, я отключился от VPN моей компании, подозревая, что, возможно, это была проблема, но я все еще получал ошибку при использовании домашнего Wi-Fi и без VPN. Затем я обновил все свои пакеты, но все еще получал сообщение об ошибке. Затем я выключил свой Macbook и перезагрузил компьютер, но ошибка все равно появлялась. Наконец, я изменил свой скрипт, чтобы он больше не загружал tidyverse целиком, а вместо этого загружал:

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

Затем мой файл Rmarkdown отображается в html без неизвестной ошибки часового пояса. К сожалению, я не могу точно определить, что именно исправило ошибку или почему загрузка частей, а не всего tidyverse, мне помогла. Вы когда-нибудь решали свою проблему?


Информация о моей сессии, когда она работала:

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
person Jeremy Allen    schedule 20.11.2017
comment
К сожалению, я еще не решил эту проблему. Ваше решение (или мне следует называть его обходным путем?) кажется мне довольно странным. Я тоже не могу заставить его работать; Я все равно получаю ошибку, загружаю ли я смазку до tidyverse, после нее, с ней или без нее. Кажется, это не имеет значения для моей системы. Как и вы, я получаю эту ошибку на ноутбуке моей компании. Тем временем я получил новый ноутбук с обновленными R/пакетами. Однако это поведение не изменилось. - person Taeke; 11.12.2017

Ответ на этот вопрос сработал для меня.

Например, я добавил Sys.setenv(TZ='America/Detroit') в свой скрипт.

person Joshua Rosenberg    schedule 30.11.2017
comment
Я проверил свою систему, и действительно, переменная окружения TZ недоступна. К сожалению, его установка не меняет наблюдаемого поведения — по-прежнему получается error() - person Taeke; 11.12.2017

Решение, представленное здесь Ошибка R: неизвестный часовой пояс с as.POSIXct()

В моем случае после включения Sys.setenv(TZ="America/Lima") в начале кода все работает нормально. Пожалуйста, проверьте список допустимых значений TZ на https://en.wikipedia.org/wiki/List_of_tz_database_time_zones

person JC Riveros    schedule 06.01.2018