2

以下のコードが日付ではなく整数を出力するのはなぜですか?

> 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
4

1 に答える 1

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"

回避策:

ベクトル化バージョンを使用します。

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"
于 2012-12-07T05:15:14.610 に答える