> system.time(sapply(rnorm(1000000,0,1), function (x) round(x,2)))
user system elapsed
2.78 0.11 2.89
> system.time(round(rnorm(1000000,0,1),2))
user system elapsed
0.29 0.00 0.30
私はこれをRヒントの質問の答えを読んだ後に試していました。上記のケースでは、sapplyは同等の合成関数よりも遅くなるとは思っていませんでした。誰がなぜこれが当てはまるのか知っていますか?私が正しく理解すれば、サプリーはベクトル化し、最適に速く近くなります。サプリーと複合機能の速度比較
Kohskeは右である:
は、あなたがそれにリストを与えた場合の比較します。サプリーは実際のベクトル化の錯覚または貧弱な代替物を作成するだけです。可能であれば、本質的にベクトル化された関数を使用してすべての変換を構築するようにしてください。 –
'sapply'の主な目的は、ループの読みやすさを向上させ、タイピングを保存することです。 –
参照:http://stackoverflow.com/questions/2275896/is-rs-apply-family-more-than-syntactic-sugar –