3

私はデータとワーキングサマリー機能を持っています:

[data:]       x = runif(100)

[function 1:] sapply(list("mean", "median", "sd"),
                  function(f) array(do.call(f, list(x)),
                  dimnames=list(f)))

     mean    median        sd 
0.5198142 0.5566567 0.3048372  

以下も実行されますが、 は与えられませんdimnames:

[function 2:] sapply(list(mean, median, sd), 
                  function(f) array(do.call(f, list(x))))

[1] 0.5198142 0.5566567 0.3048372

quote()enquote()、などのさまざまな組み合わせを試してみましたがsubstitute()deparse()関数 1 から得たのと同じ結果が関数 2 (適用される関数が引用されていない場合) で得られませんでした。存在し、関数 1 と同じ結果が得られます。

[function 3:] sapply(list(mean, median, sd), 
                  function(f) array(do.call(f, list(x)), 
                  dimnames=list(SOMEFUNCTION(f))))

問題についての私の理解は、を引用する関数を使用する必要があるということですがmean、部分的に評価されmediansd後です。fこれに対する私の試みはすべて失敗しました。

関数 3 のような関数を書き始めました。関数 1 として書き直すことが目的の出力を得る唯一の方法でしたが、関数 1 の引用符なしでこれを達成する方法があると感じずにはいられません。

この領域は私には少しわかりにくいので、コードを提供することに加えて、ソリューションが機能する理由を説明していただけますか。

ありがとう。

4

2 に答える 2