2.9 Creando nuestras funciones
Cuando necesitamos programar alguna tarea, que tenemos que realizar múltiples veces, para la cual no existe un función en los paquetes de R base o en paquetes importados, será necesario que definamos nuestras propias funciones.
Las funciones en R tienen tres componentes: nombre, parámetros y cuerpo. El nombre
permite que ejecutemos la función el número de veces que la necesitemos. Los parámetros
son las variables que existen dentro de la función y que tomarán el valor de los argumentos
con los que esta se llamada y el cuerpo, es el conjunto de operaciones que se realizarán dentro
de la función. Para declarar una función utilizamos la palabra reservada function
. Su estructura
es la siguiente:
<- function(argumentos) {
nombre
cuerpo }
Los tres componentes dependen completamente de nosotras, las desarrolladoras, y de la tarea que estemos realizando. Aunque nuestras funciones pueden llegar a ser altamente complejas, la recomendación es que una función ejecute solamente una tarea.
Para definir una función que obtenga el área de un círculo, podemos declarla de esta forma
<- function(radio) {
areaCirculo * radio^2 #pi es una constante ya definida en R
pi }
Y después ejecutarla con múltiples argumentos.
areaCirculo(10)
## [1] 314.1593
areaCirculo(2)
## [1] 12.56637
Debemos tener en cuenta que en R, las funciones regresan la última instrucción ejecutada, por lo que
a veces es conveniente hacer uso explícito de la función return()
, para indicar que ese es el valor
que queremos que nuestra función regrese.
<- function(vec) {
getStats <- mean(vec, na.rm = TRUE)
mean_v <- sd(vec, na.rm = TRUE)
sd_v <- median(vec, na.rm = TRUE)
med_v <- var(vec, na.rm = TRUE)
var_v <- sum(is.na(vec))
na_vals
<- list(media = mean_v, desv = sd_v,
all_stats var = var_v, mediana = med_v,
num_nas = na_vals)
return(all_stats)
}
Y la ejecutamos de la misma forma
<- getStats(c(23, 5, 24, 6, 24, NA, 33, 56, NA, 8))
stats1 $num_nas stats1
## [1] 2
<- getStats(1:10)
stats2 $mediana stats2
## [1] 5.5