Для этого вы используете функцию 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
.