ここには 2 つの問題があります。Date1 つは、入力が からに強制されるかどうかnumericです。もう 1 つは、出力が に強制されるかどうかnumericです。
入力
@DWin と @JoshuaUlrich が指摘しているように、 for ループは へのDate入力を強制します。ループは を取り、s は技術的にはベクトルではありません。numericforvectorsDate
> for(d in dates) print(class(d))
[1] "numeric"
[1] "numeric"
一方、lapply単純化子sapplyにはそのような制限はありません。
> sapply( dates, function(day) class(day) )
[1] "Date" "Date"
出力
でも!上記の出力はclass()文字です。実際に日付オブジェクトを返そうとすると、sapplyそれはあなたが望むものではありません。
lapplyベクトルに強制しませんが、次のことをsapply行います。
> lapply( dates, identity )
[[1]]
[1] "2013-01-01"
[[2]]
[1] "2013-01-02"
> sapply( dates, identity )
[1] 15706 15707
これは、sapplyの簡略化関数が出力をベクトルに強制するためです。
概要
したがって、オブジェクトがあり、非オブジェクトDateを返したい場合は、またはを使用できます。非オブジェクトがあり、オブジェクトを返したい場合は、ループまたは. オブジェクトがあり、オブジェクトを返したい場合は、 を使用します。DatelapplysapplyDateDateforlapplyDateDatelapply
詳細を学ぶためのリソース
ベクトルをさらに深く掘り下げたい場合は、John Cook のノートから始めて、R Infernoに進み、SDAに進むことができます。