R: L oop последовательность и выбросить ее в отдельные списки - PullRequest
0 голосов
/ 23 февраля 2020

Я пытаюсь получить список, состоящий из 17 компонентов. Каждый список должен содержать вектор из 12 дат, начиная с 2003-06-01. Вручную это выглядело бы так:

wholedate <- seq(as.Date("2003-06-01"), as.Date("2020-05-01"), by="months")
date <- list()
date[[1]] <- wholedate[1:12]
date[[2]] <- wholedate[13:24]
...
date[[17]] <- wholedate[193:204]

Я пробовал это со следующим l oop, к сожалению, он просто создает 17 списков за последние 12 месяцев (с 2019 по 01-01 до 2020 года) -05-01).

date <- list()
wholedate <- seq(as.Date("2003-06-01"), as.Date("2020-05-01"), by="months")
for(i in 1:17) {
  for(j in seq(1,193,by=12)) {
    for(k in seq(12,204,by=12)) {
      date[[i]] <- wholedate[j:k]
    }}}

Я надеюсь, что кто-нибудь может помочь мне в этом.

1 Ответ

0 голосов
/ 24 февраля 2020

Это не работает, потому что вы вкладываете циклы, когда на самом деле элементы j и k их соответствующих циклов должны go рука об руку. Я считаю это проще всего с помощью пакета purrr. Обратите внимание, что вам не нужно начинать с пустого списка при запуске этого:

date <- map2(seq(1, 193, by = 12), seq(12, 204, by = 12), ~ wholedate[.x:.y])
date

[[1]]
 [1] "2003-06-01" "2003-07-01" "2003-08-01" "2003-09-01" "2003-10-01" "2003-11-01" "2003-12-01" "2004-01-01" "2004-02-01" "2004-03-01"
[11] "2004-04-01" "2004-05-01"

[[2]]
 [1] "2004-06-01" "2004-07-01" "2004-08-01" "2004-09-01" "2004-10-01" "2004-11-01" "2004-12-01" "2005-01-01" "2005-02-01" "2005-03-01"
[11] "2005-04-01" "2005-05-01"

#cut for brevity

[[16]]
 [1] "2018-06-01" "2018-07-01" "2018-08-01" "2018-09-01" "2018-10-01" "2018-11-01" "2018-12-01" "2019-01-01" "2019-02-01" "2019-03-01"
[11] "2019-04-01" "2019-05-01"

[[17]]
 [1] "2019-06-01" "2019-07-01" "2019-08-01" "2019-09-01" "2019-10-01" "2019-11-01" "2019-12-01" "2020-01-01" "2020-02-01" "2020-03-01"
[11] "2020-04-01" "2020-05-01"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...