5

R の関数には、いくつかのデフォルト値またはカスタム ユーザー関数を使用できます。

myfun = function(x = c('funA', 'funB', 'funC'), customFUN = NULL)
{
}

ユーザーがデフォルトでリストされている x の値を選択すると、customFUN は無視されます。Rでこれを処理する最良の方法は何ですか?

私は使用できます

myfun = function(x = c('funA', 'funB', 'funC'), customFUN = NULL)
{

  if (! is.null(customFUN)) {
    choosenFUN = match.fun(customFUN)
  }
  else {
    choosenFUN.string = match.arg(x)

    if (choosenFUN == 'funA')
       choosenFUN = algorithmA
    else if (choosenFUN == 'funB')
       choosenFUN = algorithmB
    #...and so on for the other defaults
  }

}

しかし、追加の引数 customFUN を追加するのは奇妙に思えます。これを行う賢い方法があるかもしれません。ありがとう!

4

1 に答える 1

0

コメントのおかげで、私はそれを手に入れたと思います:

myfun = function(x = c('funA', 'funB', 'funC'))
{
  if (is.function(x))
    func = x
  else                  
    func.string = switch(match.arg(x), funA = 'UseA', funB = 'UseB', funC = 'Usec')

  if (func.string == 'UseA') 
    func = algorithmA
  else if (func.string == 'UseB')
    func = algorithmB
  # and so on

  func
}
于 2012-11-10T01:43:42.670 に答える