2017-03-21 1 views
2

としてR機能を使用して:、lapply使用するためには私のようにいくつかの関数であってRのリストを作成していリスト

funs <- list(
+  sum = sum, 
+  mean = mean, 
+  median = median 
+ ) 

私は用途に言及していハドレーウィッカムの本:

lapply(funs, function(f) f(x)) 

私はlapply関数の最初の引数はリストですが、どのように来るのですかfunction(f) f(x) はlapplyの2番目の引数になります。これは理想的には関数でなければなりません。私のxは次のとおりです。

x <- 1:10 
+0

@RonakShahを取得し、それが評価されつつあるか、私の関心事です。私は匿名の機能について知っていて、同じカテゴリーの質問にタグを付けました。 –

答えて

3

名前にg

g <- function(f) { 
    f(x) 
} 

gを匿名関数を割り当てるときに多分それがより明確になるには、パラメータとしての機能を有し、レキシカルスコープから取得された引数x、この関数を呼び出します。だから、x <- 1:10のためにあなたが

g(sum) # = sum(x) = sum(1:10) 
[1] 55 

と同様

lapply(funs, g) # = list(g(sum), g(means), g(median) 
       # = list(sum(x), means(x), median(x) 
       # = list(sum(1:10), means(1:10), median(1:10) 
$sum 
[1] 55 

$mean 
[1] 5.5 

$median 
[1] 5.5 
+0

Thanks a ton Harald。 –

3

lapplyへの第2引数は機能です

function(f) f(x) 

です。これは引数が関数でもある関数であるfです。のは、無名関数から「匿名」を出してみましょう、何が起こっているかを明らかにすること

getFunc <- function(f) f(x) 
lapply(funs, getFunc) 

これはまさに、別途getFuncを定義することなく

lapply(funs, function(f) f(x)) 

と同じです。さらに行く

、のxを出してみましょう:

getFunc <- function(f, xx) f(xx) 
lapply(funs, getFunc, xx=x) 

は、これはかなり

lapply(funs, function(f) f(x)) 

しかし、明示的に、合計を計算意味するの数字を渡しと中央値と同じです地球環境からそれらを自動的に取得するよりも

+0

xが1:10の場合、この関数は何に評価されますか? –

+0

これを実行して調べますか?私が手 –

+0

出力は次のようになります。 '> lapply(低速運行、機能(F)は、f(x))を $和 [1] 55 $は を意味する[1] 5.5 $中央 [1] 5.5私が理解しているのは ' です。私が得ないのは、関数である2番目の引数がどのように評価され、lapplyに渡されるかです。 –

関連する問題