studio - superponer graficas en r
Pruebe si un argumento de una función está establecido o no en R (3)
Tengo una función f
que toma dos parámetros ( p1
y p2
):
Si para el parámetro p2
no se pasó ningún valor a la función, se debe usar el valor de p1
^ 2 en su lugar. Pero cómo puedo averiguar dentro de la función, si se da un valor o no. El problema es que la variable p2
no se inicializa si no hay valor. Por lo tanto, no puedo probar que p2
sea NULL
.
f <- function(p1, p2) {
if(is.null(p2)) {
p2=p1^2
}
p1-p2
}
¿Es de alguna manera posible verificar si un valor para p2
fue pasado a la función o no? (No pude encontrar un isset()
- función o cosas similares.)
Creo que "extrañar" debería hacerlo.
En un caso como este, también puedes usar algo como esto:
f <- function(p1, p2 = p1 ^ 2) {
p1-p2
}
Consulte la parte de evaluación Lazy en http://adv-r.had.co.nz/Functions.html
Utiliza la función missing()
para eso.
f <- function(p1, p2) {
if(missing(p2)) {
p2=p1^2
}
p1-p2
}
Alternativamente, puede establecer el valor de p2 en NULL de forma predeterminada. A veces prefiero esa solución, ya que permite pasar argumentos a funciones anidadas.
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
EDITAR: también puedes hacer esto técnicamente con missing()
, pero también deberías incluir una instrucción missing()
en f.wrapper
.