ここには 2 つの問題があります。Date
1 つは、入力が からに強制されるかどうかnumeric
です。もう 1 つは、出力が に強制されるかどうかnumeric
です。
入力
@DWin と @JoshuaUlrich が指摘しているように、 for ループは へのDate
入力を強制します。ループは を取り、s は技術的にはベクトルではありません。numeric
for
vectors
Date
> 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
を返したい場合は、またはを使用できます。非オブジェクトがあり、オブジェクトを返したい場合は、ループまたは. オブジェクトがあり、オブジェクトを返したい場合は、 を使用します。Date
lapply
sapply
Date
Date
for
lapply
Date
Date
lapply
詳細を学ぶためのリソース
ベクトルをさらに深く掘り下げたい場合は、John Cook のノートから始めて、R Infernoに進み、SDAに進むことができます。