如何避免 R 自动将日期转换为数字?

10
如何避免在for循环中R将日期转换为数字?这与此问题有关,该问题显示了mapply的相同行为禁用将日期自动转换为数字
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

禁用 mapply 自动将日期转换为数字

编辑

我重新打开了这个问题,因为重复的问题循环日期时间对象会导致数值迭代器问 R 循环为什么会将日期和时间对象转换为数值,而这个问题则是问如何避免这种行为。答案非常直接解决问题,与重复问题中的其他回答不同,后者正确回答了那个问题。


1
在Base R中,Date类将日期存储为自纪元以来的天数,因此您看到的是真实的基础数据。您的问题实际上是关于该数据的呈现方式。 - Tim Biegeleisen
很麻烦,但你可以重新转换:for (i in date) print(as.Date(i, origin = '1970-01-01')) - alistaire
1个回答

14

for循环会将序列强制转换为向量,除非它是向量、列表或其他一些东西。 date不是向量,也不存在日期向量的概念。因此,你需要使用as.list来保护它免受强制转换为向量的影响:


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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接