Преобразование часового пояса: недопустимое значение 'tz' - R - PullRequest
1 голос
/ 13 апреля 2020

Моя цель - преобразовать «системный» часовой пояс в местный часовой пояс. У меня есть все зависимые часовые пояса, сохраненные в столбце, но это не работает, см. Пример ниже (ошибка = неверное значение 'tz'):

   db<-data.table(c('Africa/Windhoek','Europe/Andorra','America/Chicago'), c('2017-12-31 17:04:00','2017-9-1 13:30:12','2017-12-15 21:33:13')) 
   names(db) = c('tz','date')
   db$date<- as.POSIXct(db$date, tz="Europe/London", format= c("%Y-%m-%d %H:%M:%OS"))

   db$original_time<-format(db$date, tz=db$tz) 

Я прочитал второй ответ в неверный 'tz 'значение, проблемы с часовым поясом , (Источник вашей ошибки "недопустимое значение' tz '" потому, что по какой-то причине R не принимает tz = df $ var. Если вы установите tz = 'America / New_York' или какое-либо другое символьное значение, тогда оно будет работать.) но действительно ли этот ручной ввод является единственным решением этой проблемы, поскольку у меня 247 уровней / часовых поясов, и я считаю, что есть более плавный путь?

Спасибо!

1 Ответ

2 голосов
/ 13 апреля 2020

Проблема в том, что format ожидает строковый тип, но вы даете ему вектор.

Попробуйте выполнить итеративное форматирование

library(purrr)
map2(df$date, df$tz, ~ format(.x, tz = .y))
...