如何在R语言中测试变量是否为函数?——自定义函数参数合法性校验方法咨询
验证R函数参数是否为函数类型的方法
嘿,要检查fun是不是函数,R内置的is.function()就是你要找的工具!这是最直接的类型检查方式,完全符合良好的编程规范。
把你的myfun改成下面这样就行:
myfun <- function(fun){ # 先验证参数类型,不符合就抛出明确错误 if (!is.function(fun)) { stop("参数fun必须是一个函数,请传入有效的函数对象!") } return(fun(1)) }
简单解释下:
is.function()专门用来判断一个对象是不是函数类型,返回TRUE或FALSE。- 用
stop()抛出错误能立刻提醒调用者参数类型不对,避免后续执行出现更隐晦的问题——这正是你想要的“良好编程实践”。
测试几个场景:
- 正常调用(传入合法函数):
myfun(function(x) x * 5) # 输出:5,完美运行 - 错误调用(传入非函数值):
myfun("我不是函数") # 抛出错误:Error in myfun("我不是函数") : 参数fun必须是一个函数,请传入有效的函数对象!
如果你的场景需要更严格的检查(比如要确保对象是可调用的,比如某些特殊的函数式对象),可以额外搭配is.callable(),不过对于绝大多数常规使用场景,is.function()已经完全够用啦。
内容的提问来源于stack exchange,提问作者JeremyC
相关产品推荐
相关产品推荐

