首页 > 解决方案 > seq 日期向量的类型为 double 但显示为字符

问题描述

我正在尝试在 R 中设置上个月的日期向量。我想遍历这些日期并根据日期执行操作。

vector_of_dates <- seq(as.Date("2019-07-31")-30, as.Date("2019-07-31"), by = "days")
print(vector_of_dates)

这将导致以下输出。到目前为止看起来不错。

打印日期

但是,如果我遍历向量并打印每个元素,我会得到数字而不是日期。

for (date in vector_of_dates) {print(date)}

这是输出的一个子集。这似乎很奇怪。

印刷元素

此外,如果我尝试将这些解释为日期,则会出现错误。

for (date in vector_of_dates) {print(as.Date(date))}

导致以下错误。

错误

我究竟做错了什么?

标签: r

解决方案


1) as.listfor语句从日期中剥离类。将向量转换为列表以避免这种情况:

for(d in as.list(vector_of_dates)) print(d)

给予:

[1] "2019-07-01"
[1] "2019-07-02"
[1] "2019-07-03"
[1] "2019-07-04"
## ... etc ...

2)索引另一种方法是迭代索引:

for(i in seq_along(vector_of_dates)) print(vector_of_dates[i])

3) lapply我们可以使用lapply而不是for

junk <- lapply(vector_of_dates, print)

另请注意,它c有一个Date方法,例如,这将返回一个Date向量:

do.call("c", junk)

推荐阅读