r - R:检查函数是否已作为参数提供给另一个函数的正确方法
问题描述
我目前正在修改一个使用用户提供的函数作为其输入之一的函数。我尝试使用“is.na”来查看是否提供了一个函数并且在它工作的同时 - 它目前也会产生一个警告。有没有更好的方法来检查这个论点是否存在?
example <- function(num1, num2, functionName = NA) {
if (is.na(functionName)) {
return(list(num1, num2))
} else {
value <- functionName(num1, num2)
return(value)
}
}
> example(1,3)
[[1]]
[1] 1
[[2]]
[1] 3
> example(1,3, sum)
[1] 4
Warning message:
In is.na(functionName) :
is.na() applied to non-(list or vector) of type 'builtin'
解决方案
如果您可以将函数名称作为字符串传递,我们可以使用match.fun
example <- function(num1, num2, functionName = NA) {
if (is.na(functionName)) {
return(list(num1, num2))
} else {
value <- match.fun(functionName)(num1, num2)
return(value)
}
}
example(1, 3)
#[[1]]
#[1] 1
#[[2]]
#[1] 3
example(1,3, "sum")
#[1] 4
example(2,3, "*")
#[1] 6
推荐阅读
- java - 在 SWT 小部件表中动态填充大量数据
- vue.js - 我需要从 vue js 中的数据中获取价值
- laravel - 获取 Laravel 中代码相同的相关产品
- scala - 在子类实例化中使用替代超类构造函数
- java - 空检查的频率和位置
- laravel - Laravel 计划不会自动运行
- javascript - 更改/编辑活动 jQuery Datepicker 的 onSelect 事件
- reactjs - 如何在以下代码中添加 gm_authFailure?
- postgresql - postgres 中与 mongoose 中间件有什么相同的功能?
- pandas - 根据 if 语句分组