我有一个函数f
它需要两个参数(p1
and p2
):
如果对于参数p2
没有值传递给函数,值p1
应使用 ^2 代替。但是我怎样才能在函数中找出是否给定了值。问题是变量p2
如果没有值则不会初始化。因此我无法测试p2
being NULL
.
f <- function(p1, p2) {
if(is.null(p2)) {
p2=p1^2
}
p1-p2
}
是否可以以某种方式检查值是否为p2
是否传递给函数? (我找不到isset()
- 功能或类似的东西。)
您使用该功能missing()
为了那个原因。
f <- function(p1, p2) {
if(missing(p2)) {
p2=p1^2
}
p1-p2
}
或者,您可以默认将 p2 的值设置为 NULL。我有时更喜欢这种解决方案,因为它允许将参数传递给嵌套函数。
f <- function(p1, p2=NULL) {
if(is.null(p2)) {
p2=p1^2
}
p1-p2
}
f.wrapper <-function(p1,p2=NULL){
p1 <- 2*p1
f(p1,p2)
}
> f.wrapper(1)
[1] -2
> f.wrapper(1,3)
[1] -1
编辑:你可以在技术上做到这一点missing()
以及,但是你必须包括一个missing()
中的声明f.wrapper
以及。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)