R 在循环中使用列表中的两项

R 在循环中使用列表中的两项,r,R,我有一个日期列表,我试图将一个日期分配给一个变量,将列表中的前一个日期分配给另一个 我似乎能找到一种方法来分配前一天的工作。我希望这能奏效: list = c("20200102", "20200103", "20200106", "20200107", "20200108", "20200109") for(i in 1:length(list)) { date = list[i] date1 = list[i]-1 } 但是date1有一个明显的非数字错误 谁能给我指一下正确

我有一个日期列表,我试图将一个日期分配给一个变量,将列表中的前一个日期分配给另一个

我似乎能找到一种方法来分配前一天的工作。我希望这能奏效:

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


for(i in 1:length(list))
 {
 date = list[i]
 date1 = list[i]-1
 }
但是date1有一个明显的非数字错误


谁能给我指一下正确的方向吗?

这里不需要回路。如果需要保持原始格式,则从
日期
类转换变量中减去1后,应用
格式

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

我不确定您的预期输出,下面是我对您的预期
for
循环代码的猜测

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 <- as.Date(list,"%Y%m%d")
date1 <- as.Date(list,"%Y%m%d")-1)

date您的意思是
as.date
否-我将其用作字符串来查找文件名
as.character
没有
格式的第二个选项。你能显示你的预期输出吗?我正在尝试创建一个循环,从一个文件(日期)读取一个值,从上一个日期(日期1)读取一个值。一定有一种方法可以一次性完成,而不是存储值?@nicshah我不清楚你在帖子中的循环。请用一个小的可复制的例子更新你的帖子。我想看看各种解决方案,并且喜欢你的答案的风格。让我们保持开放和友好:)@thomasscoding-sure。祝你愉快。天哪@akrun OP想要上一个日期。。。你的只给出了前一天的元素,而我的给出了前一天的元素。您运行并比较,将看到差异
> 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"
date <- as.Date(list,"%Y%m%d")
date1 <- as.Date(list,"%Y%m%d")-1)