Использование двух элементов в списке в цикле - PullRequest
0 голосов
/ 18 марта 2020

У меня есть список дат, и я пытаюсь назначить одну дату переменной, а предыдущую дату в списке другой.

Кажется, я могу найти способ назначить предыдущий день. Я надеялся, что это сработает:

list = c("20200102", "20200103", "20200106", "20200107", "20200108", 
"20200109")


for(i in 1:length(list))
 {
 date = list[i]
 date1 = list[i]-1
 }

, но я получаю очевидную нечисловую c ошибку с датой1

Может ли кто-нибудь указать мне правильное направление?

Ответы [ 2 ]

0 голосов
/ 18 марта 2020

Я не уверен относительно вашего ожидаемого результата, и ниже мое предположение относительно вашего предполагаемого for l oop кода

date <- c()
date1 <- c()
for(i in 1:length(list))
{
  date[i] = as.character(as.Date(list[i], "%Y%m%d"))
  date1[i] = as.character(as.Date(list[i], "%Y%m%d")-1)
}

такого, что

> date
[1] "2020-01-02" "2020-01-03" "2020-01-06" "2020-01-07" "2020-01-08"
[6] "2020-01-09"

> date1
[1] "2020-01-01" "2020-01-02" "2020-01-05" "2020-01-06" "2020-01-07"
[6] "2020-01-08"

В этом случае, на самом деле вам даже не нужно for l oop, то есть

date <- as.Date(list,"%Y%m%d")
date1 <- as.Date(list,"%Y%m%d")-1)
0 голосов
/ 18 марта 2020

Нам не нужно здесь oop. Если он должен оставаться в исходном формате, после вычитания 1 из преобразованной переменной класса Date примените format

v1 <- list
v2 <- format(as.Date(list, "%Y%m%d")-1, "%Y%m%d")

Если нам нужно al oop, мы можем использовать lapply без предварительной настройки

lapply(seq_along(list)), function(i) {
       date <- as.character(as.Date(list[i], "%Y%m%d"))
       date1 <- as.character(as.Date(list[i], "%Y%m%d") - 1)
  })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...