我有一个接受函数输入的函数。
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与这种方式进行比较。有没有办法检查是否输入了特定功能?
答案 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}})。