2013-08-15 27 views
5

私はgithubからFunctionalsを読んでいます。このページの1つの提案は、機能のリストで作業している場合はcall_functionを使用することでした。こちらのページからのコードは次のとおりです。しかし、私は上記の結果を再現することができませんでした関数プログラミングR

# [[1]] 
# [1] 498 
# 
# [[2]] 
# [1] 0.498 
# 
# [[3]] 
# [1] 0.49 
# 
# [[4]] 
# [1] 0.29 

call_fun <- function(f, ...) f(...) 
f <- list(sum, mean, median, sd) 
lapply(f, call_fun, x = runif(1e3)) 

出力は次のように掲載されました。エラーが発生しました:

Error in FUN(X[[4L]], ...) : could not find function "f" 

私はここに何か不足していますか?

sd = 2 

call_fun <- function(f, ...) f(...) 
f <- list(sum, mean, median, sd) 
lapply(f, call_fun, x = runif(1e3)) 
#Error in FUN(X[[4L]], ...) : could not find function "f" 
はあなたのセッションを再起動するか rm(sd)を行う

答えて

5

あなたは機能sdを再定義しています。

+0

ありがとう@eddi。私の質問が将来のユーザーに役立つかどうかはわかりません。些細なことがあれば、私は喜んで削除します。 – Metrics

+3

私はあなたがそれを削除できないと確信しています。それはすでにアップボート(鉱山)とアップアップ(私と他のもの)を持っています。問題を処理するためのプログラム的な方法があるのなら、私はまだ不思議です。私は 'call_fun < - function(f、...)match.fun(f)(...)'を試しました。これは単純なケースでは成功し、同じ方法で 'sd == 5'で環境に失敗します。 –

+1

@Metrics 'sd'の前にこのまったく同じ問題に遭遇しました(2つの文字変数名が非常に多い)ので、おそらくあまり間違いではありません。検索エンジン) – eddi

関連する問題