【问题标题】:How to avoid R converting dates to numeric automatically?如何避免 R 自动将日期转换为数字?
【发布时间】:2020-11-23 18:54:00
【问题描述】:

如何避免 R 在 for 循环中将日期转换为数字?这与这个问题有关,它显示了 mapply disabling mapply automatically converting Dates to numeric 的相同行为

date <- c('2008-02-20','2009-10-05')
date <- as.Date(date, format = '%Y-%m-%d')
date
[1] "2008-02-20" "2009-10-05"
for (i in date) print(i)
[1] 13929
[1] 14522

disabling mapply automatically converting Dates to numeric

编辑

自从重复的Looping over a datetime object results in a numeric iterator 询问为什么 R 循环将日期和日期时间对象转换为数字后,我重新打开了这个问题,这个问题询问如何避免这种行为。答案是解决问题的关键,与副本中接受的答案和其他答案不同,它正确回答了其他问题。

【问题讨论】:

  • Base R 中的Date 类将日期存储为自纪元以来的天数,因此您看到的是真正的基础数据。您的问题实际上是关于数据的呈现。
  • 比较麻烦,不过可以重新转换:for (i in date) print(as.Date(i, origin = '1970-01-01'))

标签: r


【解决方案1】:

for 循环将序列强制转换为向量,除非它是向量、列表或其他一些东西。 date 不是向量,也不存在日期向量之类的东西。所以你需要as.list 来保护它不被强制转换为向量:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-11
    • 2018-01-04
    • 2013-04-02
    • 1970-01-01
    • 2019-11-04
    相关资源
    最近更新 更多