R:检查函数是否已作为参数提供给另一个函数的正确方法
R: Proper way of checking if a function has been supplied as a argument to another function
我目前正在修改一个函数,该函数使用用户提供的函数作为其输入之一。我尝试使用 '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
我目前正在修改一个函数,该函数使用用户提供的函数作为其输入之一。我尝试使用 '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