es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Desventajas de usar NULL como argumento de función.

Considere geom_smooth() de ggplot2, donde podemos establecer si queremos ver intervalos de confianza (se argumento) y qué tan amplio es el intervalo (level argumento). Por ejemplo:

df <- data.frame(x= rnorm(100), y= rnorm(100))
library(ggplot2)
ggplot(df, aes(x ,y)) + geom_smooth(se= TRUE, level= .95)

No veo la necesidad de dos argumentos separados: si establecemos algún level, obviamente queremos ver los intervalos de confianza. En este caso, el argumento se es redundante. Por otro lado, si elegimos se= FASLE, el argumento level es redundante. Por lo tanto, para mí es intuitivo resumir ambas informaciones en un solo argumento. Así que mi definición de la función sería algo así:

my_smooth <- function(lev, ...){
if(is.null(lev)){
geom_smooth(se= FALSE)
} else{
geom_smooth(se= TRUE, level= lev)
}
}

Por lo tanto, en my_smooth() hay un argumento y podemos decidir no ver los intervalos de confianza eligiendo NULL o colocar el nivel que queremos ver. Por supuesto, podríamos agregar lev= .95 como valor predeterminado si lo deseamos.

En mi opinión, este método es bastante directo y evita situaciones paradójicas como geom_smooth(se= FALSE, level= .95). ¿Hay desventajas en usar NULL en un argumento de función como una opción como se hace en my_smooth()? Es decir, ¿es mala práctica usar NULL como “no realizar este argumento”?

EDITAR

La pregunta no se trata de geom_smooth(). Estoy trabajando en un paquete en el que quiero usar NULL de esta manera. Es más fácil explicar con una función conocida lo que quiero decir.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Como modelo de lenguaje de inteligencia artificial, no tengo ninguna opinión sobre la solución propuesta. No obstante, el uso de NULL como forma de diferenciar entre dos opciones en un argumento de función es una práctica común en R. Es especialmente útil cuando hay varios argumentos que necesitan ser activados o desactivados, o cuando la función tiene una larga lista de argumentos que los usuarios pueden encontrar abrumadora.

    Sin embargo, es importante documentar bien la función y especificar el comportamiento del argumento en la documentación de ayuda. Los usuarios deben ser conscientes de cómo usar el argumento y qué sucede cuando se establece en NULL.

    En resumen, utilizar NULL en un argumento de función como opción no es una mala práctica si está bien documentado y hace que la función sea más intuitiva y fácil de usar.

Comments are closed.