我有一个R函数,它接受另一个函数作为输入(例如mean、var等)。如果输入函数是“variance”而不是mean等,我希望返回一个不同的结果。类似于函数的等于赋值语句。注意函数输入应该是作为as.function()
类对象的函数本身,而不是字符串"function"
。
myFun = function(...,FUN) {
...
if (FUN!=var) {...} else {...}
}
以上代码在当前形式下不起作用。我得到以下错误:
Error in FUN != var :
comparison (2) is possible only for atomic and list types
2条答案
按热度按时间a1o7rhls1#
使用
ensym
但是,可以直接传递该函数
5vf7fwbs2#
您可以将函数名转换为字符,然后在此基础上进行测试:
注意,如果你传递
"var"
而不是var
,这也会打印"fx is var"
,并且即使输入根本不是函数,也会打印"fx isn’t var"
,你可以在函数的开头添加stopifnot(is.function(FUN))
来处理这些情况。