testing一个函数的参数是否设置在R中

我有一个函数f ,需要两个参数( p1p2 ):

如果对于参数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 } 

请参阅http://adv-r.had.co.nz/Functions.html上有关懒惰评估的部分;