as.POSIXct дает неожиданный часовой пояс

Я пытаюсь преобразовать дату yearmon (из пакета zoo ) в POSIXct в часовом поясе UTC. Вот что я пытался сделать:

> as.POSIXct(as.yearmon("2010-01-01"), tz="UTC")
[1] "2010-01-01 01:00:00 CET"

Я получаю то же самое, когда конвертирую Date:

> as.POSIXct(as.Date("2010-01-01"),tz="UTC")
[1] "2010-01-01 01:00:00 CET"

Единственный способ заставить его работать - это передать символ в качестве аргумента:

> as.POSIXct("2010-01-01", tz="UTC")
[1] "2010-01-01 UTC"

Я просмотрел документацию по DateTimeClasses , tzset и часовые пояса . Мое / etc / localtime установлено на Europe / Amsterdam. Мне не удалось найти способ установить tz равным UTC, кроме установки переменной среды TZ:

> Sys.setenv(TZ="UTC")
> as.POSIXct(as.Date("2010-01-01"),tz="UTC")
[1] "2010-01-01 UTC"

Можно ли напрямую установить часовой пояс при создании POSIXct из года или даты?

Изменить:

] Я проверил функции как .POSIXct.yearmon. Этот переходит в as.POSIXct.Date.

> zoo:::as.POSIXct.yearmon
function (x, tz = "", ...) 
as.POSIXct(as.Date(x), tz = tz, ...)

Так, как говорит Джошуа, часовой пояс теряется в as.POSIXct.Date. На данный момент я воспользуюсь предложением Ричиса, чтобы установить тональный сигнал вручную, используя:

attr (x, "tzone")

Это решает проблему потерянного тонального сигнала, который используется только для презентации. а не внутренне, как предполагали Гротендик и Двин.

12
задан SiggyF 1 July 2011 в 18:49
поделиться