2016-04-04 12 views
-2

私はRを使って数学モデルを構築しています。私は3つの引数を取る関数f(a, b, g)を書きたいと思い、最後は関数です。私は別の関数の引数として関数を渡すことができますか?これが可能ならば、あなたは私に簡単な例を教えてもらえますか?ありがとう。R言語、引数として関数を渡すことができます

+1

を参照してください。 http://adv-r.had.co.nz/Functionals.html – Laterow

+0

はい。他の関数を引数として受け入れるR関数については、 '?optim'と'?integrate'のサンプルセクションを参照してください。 –

答えて

5

関数に関数の引数を渡すことは確かです。多くの初等R関数がこれを行います。例えば、

tapply(..., FUN) 

あなたが?tapplyによってそれらを確認することができます。

重要なことは、関数の名前だけをシンボルとして扱うことです。例えば、下記トイ例で:

foo1 <- function() print("this is function foo1!") 
foo2 <- function() print("this is function foo2!") 

test <- function (FUN) { 
    if (!is.function(FUN)) stop("argument FUN is not a function!") 
    FUN() 
    } 

## let's have a go! 
test(FUN = foo1) 
test(FUN = foo2) 

...を使用して、testfoo1又はfoo2の関数の引数を渡すことも可能です。私はあなたにいくつかの研究をさせるためにこれを残す。


あなたがC言語に精通している場合、これが正当なものである理由を理解することは難しいことではありません。 RはC言語で書かれていますが(言語の構文はS言語に属します)、本質的にこれは関数へのポインタを使用することによって実現されます。詳細については、How do function pointers in C work?

関連する問題