R for循环与in类型转换

时间:2012-12-07 05:12:24

标签: r for-loop

为什么下面的代码不是打印日期而是整数?

> for (t in seq(as.Date('20090101','%Y%m%d'),as.Date('20090105','%Y%m%d'),1 ))
+ {
+   print(t)
+ }
[1] 14245
[1] 14246
[1] 14247
[1] 14248
[1] 14249

1 个答案:

答案 0 :(得分:3)

正如@flodel所建议的那样,for循环保留了Type而不是类:

h <- seq(as.Date('20090101','%Y%m%d'),as.Date('20090105','%Y%m%d'),1)
 class(h)
[1] "Date"
> typeof(h)
[1] "double"

解决方法:

使用vectorize版本:

print(seq(as.Date('20090101','%Y%m%d'),as.Date('20090105','%Y%m%d'),1 ))

或循环遍历序列索引并使用[检索日期:

for (i in seq_along(h)) {
    dt <- h[i]
    print(dt)
}


[1] "2009-01-01"
[1] "2009-01-02"
[1] "2009-01-03"
[1] "2009-01-04"
[1] "2009-01-05"