R如何检查输入是否为特定功能

时间:2018-06-25 04:20:45

标签: r

我有一个接受函数输入的函数。

 myfunc <- function(FUN){}

在那里,我想检查FUN是否为mean,并执行更多任务

 myfunc <- function(FUN){
      ``some tasks here``
      if(FUN==mean){``some more task here``} # this FUN==mean is not valid
 }

但是,似乎无法将FUN与这种方式进行比较。有没有办法检查是否输入了特定功能?

1 个答案:

答案 0 :(得分:2)

使用checkmate::assert_function()可以提高安全性。

myfunc <- function(FUN){
  checkmate::assert_function(mean)

  if( identical(FUN, base::mean) ){
    return( TRUE )
  } else {
    return( FALSE )
  }
}

myfunc(mean)    # TRUE
myfunc(meanie)  # FALSE

SO question在稍微复杂一些的情况下提示substitute()和其他解决方案。

edit :遵循@spacedman的建议,并在'if'条件下替换了substitute(FUN) == "mean"以使其更强大(尤其是针对将其功能命名为mask { 1}})。