Объединить список векторов POSIXct - PullRequest
1 голос
/ 02 октября 2019

Предположим, у вас есть список, и каждый элемент списка представляет собой вектор POSIXct, например:

> t = `attr<-`(Sys.time(), "tzone", "UTC")
> t
[1] "2019-10-02 16:07:19 UTC"
> dts = list(t + 1:3, t + 6:9)
> dts
[[1]]
[1] "2019-10-02 16:07:20 UTC" "2019-10-02 16:07:21 UTC"
[3] "2019-10-02 16:07:22 UTC"

[[2]]
[1] "2019-10-02 16:07:25 UTC" "2019-10-02 16:07:26 UTC"
[3] "2019-10-02 16:07:27 UTC" "2019-10-02 16:07:28 UTC"

Я хотел бы объединить векторы в dts, получая то же самое, что иt + c(1:3, 6:9). Но unlist(dts) и c(dts, recursive = TRUE) отбрасывают класс и атрибуты элементов, возвращая только обычные числовые векторы. Что делать?

Для простоты можно предположить, что все векторы POSIXct в списке находятся в одном часовом поясе.

1 Ответ

1 голос
/ 02 октября 2019

Мы можем использовать do.call с c, чтобы избежать приведения его к numeric

do.call(c, dts)
#[1] "2019-10-02 12:11:33 EDT" "2019-10-02 12:11:34 EDT" "2019-10-02 12:11:35 EDT" "2019-10-02 12:11:38 EDT" "2019-10-02 12:11:39 EDT" "2019-10-02 12:11:40 EDT"
#[7] "2019-10-02 12:11:41 EDT"

Или с reduce из purrr

library(purrr)
reduce(dts, c)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...