testing一个函数的参数是否设置在R中
我有一个函数f
,需要两个参数( p1
和p2
):
如果对于参数p2
没有值传递给函数,则应该使用p1
^ 2的值。 但是如何在函数内find值,是否给出了值。 问题是,如果没有值,variablesp2
不会被初始化。 因此我无法testingp2
是否为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。 我有时更喜欢这个解决scheme,因为它允许将parameter passing给嵌套函数。
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()
来做,但是你必须在f.wrapper
包含一个missing()
语句。
我认为'失踪'应该这样做。
在这样的情况下,你也可以使用这样的东西:
f <- function(p1, p2 = p1 ^ 2) { p1-p2 }