r - 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))}
导致以下错误。
我究竟做错了什么?
解决方案
1) as.list该for
语句从日期中剥离类。将向量转换为列表以避免这种情况:
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)
推荐阅读
- groovy - 在 groovy case 语句中使用范围
- php - SameSite=Lax 阻止来自同一域的 cookie,说它是不同的域
- ag-grid - 我们可以在 Ag 图表的列/条上方显示标签吗
- javascript - 如何正确解决 mongoDB 调用中的承诺?
- python - 使用 pysmb 将 pdf 文件发送到远程共享文件夹
- node.js - 从条带处理程序发送的转换 API 事件甚至无法到达测试事件选项卡
- arduino - 如何通过处理检测我的 arduino 连接到的串行端口?
- scala - 根据 spark 中给出的参数从 csv/json/parquet 读取数据帧
- java - 如何在 Java 中删除重复的特殊字符?
- sql - 将字符转换为数字,例如 +00005 到 5