时区转换:无效 'tz' 值 - R

Timezone conversion: invalid 'tz' value - R

我的目标是将 "system" 时区转换为本地时区。我将所有相关时区保存在一列中,但它不起作用,请参见下面的示例(错误 = 无效 '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) 

我在 阅读了第二个答案,(你的 "invalid 'tz' value" 错误的来源是因为,无论出于何种原因,R 不接受 tz = df$var . 如果你设置 tz = 'America/New_York' 或其他一些字符值,那么它会起作用。) 但是这个手动输入真的是解决这个问题的唯一方法吗,因为我有 247 levels/timezones我相信有更顺畅的方式?

谢谢!

问题是 format 需要一个字符串类型,但你给它一个向量。

尝试迭代格式化

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