【发布时间】:2020-02-22 18:03:03
【问题描述】:
我正在尝试生成一个开始和结束日期范围为 5 天的数据框。
这是我用来创建日期范围列表的函数:
from <- as.Date("2017-01-01")
to <- as.Date("2020-02-21")
d <- seq(from, to, by = "1 days")
n <- length(d)
chunk <- 5
f <- rep(1:((n %/% chunk) + 1), each = chunk, length.out = n)
head(split(d, f))
元素看起来像:
head(split(d, f), 4)
$`1`
[1] "2017-01-01" "2017-01-02" "2017-01-03" "2017-01-04" "2017-01-05"
$`2`
[1] "2017-01-06" "2017-01-07" "2017-01-08" "2017-01-09" "2017-01-10"
$`3`
[1] "2017-01-11" "2017-01-12" "2017-01-13" "2017-01-14" "2017-01-15"
$`4`
[1] "2017-01-16" "2017-01-17" "2017-01-18" "2017-01-19" "2017-01-20"
我需要获取列表中每个元素的第 1 天和第 5 天来制作我的数据框。我正在尝试制作一个 for 循环来捕获开始(第 1 个元素)和结束(第 5 个元素)。
我正在尝试像这样访问它们:
my_date_ranges <- split(d, f)
my_date_ranges[[1]][1] #first element start
my_date_ranges[[1]][5] #first element end
my_date_ranges[[2]][1] #second element start
my_date_ranges[[2]][5] #second element end
...
但是当我尝试像这样循环列表时:
for(i in my_date_ranges){
print(my_date_ranges[[i]][1]) #this would be the starts
}
我收到此错误:
my_date_ranges[[i]] 中的错误:1 级没有这样的索引
期望的输出:
starts ends
1 2017-01-01 2017-01-05
2 2017-01-06 2017-01-10
3 2017-01-11 2017-01-15
...
n 2020-02-17 today-minus-1-day
【问题讨论】:
标签: r