0

開始日と終了日がありますが、その間のすべての日付を含むリストを作成すると、形式が変更されます。

> startDate <- as.Date("2012-01-01")
> startDate
[1] "2012-01-01"
> endDate <- as.Date("2012-02-01")
> endDate
[1] "2012-02-01"
> startDate:endDate
[1] 15340 15341 15342 15343 15344 15345 15346 15347 15348 15349 15350 15351 15352 15353 15354 15355
[17] 15356 15357 15358 15359 15360 15361 15362 15363 15364 15365 15366 15367 15368 15369 15370 15371

したがって、すべての日付が数値形式に変換されていることがわかります。しかし、問題は、日付形式を「YYYY-MM-DD」としてしか読み取れない API 関数があることです。次のようなリストを生成する方法を提案できますか?

[1] "2012-01-01" "2012-01-02" "2012-01-03" "2012-01-04" ....
4

1 に答える 1

2

使用seq機能:

seq(startDate,endDate,by="day") #you could use also by=1
# see ?seq.Date for other options for "by"

演算子のヘルプページから:?":"またはを使用?Colon):

その他の引数の場合、from:toはseq(from、to)と同等であり、fromからtoまでのシーケンスを1または-1のステップで生成します。整数から約1e-7の数値ファズまでの値と異なる場合は、toの値が含まれます。数値以外の引数は、内部的に(したがって、メソッドをディスパッチせずに)数値に強制変換されます。複雑な値では、虚数部が警告とともに破棄されます。

それで

identical(startDate:endDate,as.numeric(startDate):as.numeric(endDate))
[1] TRUE

そしてところで、あなたはリストではなくベクトルを生成しています。関数を使用して値からリストを作成することもできますas.listが、それが本当に必要な場合です。

于 2013-03-13T10:44:38.763 に答える