0

我有一个开始日期和一个结束日期,但是当我制作一个包含其间所有日期的列表时,格式会发生变化:

> startDate <- as.Date("2012-01-01")
> startDate
[1] "2012-01-01"
> endDate <- as.Date("2012-02-01")
> endDate
[1] "2012-02-01"
> startDate:endDate
[1] 15340 15341 15342 15343 15344 15345 15346 15347 15348 15349 15350 15351 15352 15353 15354 15355
[17] 15356 15357 15358 15359 15360 15361 15362 15363 15364 15365 15366 15367 15368 15369 15370 15371

因此您可以看到所有日期都转换为数字格式。但问题是,我有一个 API 函数只能将日期格式读取为“YYYY-MM-DD”。任何人都可以建议我如何生成这样的列表:

[1] "2012-01-01" "2012-01-02" "2012-01-03" "2012-01-04" ....
4

1 回答 1

2

使用seq功能:

seq(startDate,endDate,by="day") #you could use also by=1
# see ?seq.Date for other options for "by"

从操作员的帮助页面:(使用?":"or ?Colon):

对于其他参数 from:to 等价于 seq(from, to),并以 1 或 -1 的步长生成从 from 到 to 的序列。如果值与从整数到大约 1e-7 的数字模糊不同,则将包括值。非数字参数在内部(因此没有调度方法)被强制转换为数字——复杂值的虚部将被丢弃并发出警告。

所以

identical(startDate:endDate,as.numeric(startDate):as.numeric(endDate))
[1] TRUE

顺便说一句,您正在生成一个向量,而不是一个列表。as.list不过,如果这是您真正想要的,您可以使用函数列出您的值。

于 2013-03-13T10:44:38.763 回答