Sección 5 Generar nuevas funciones
R es un lenguaje que permite crear nuevas funciones. Una función se define con una asignación de la forma:
<- function(arg1, arg2, ...) {
nombre
expresion }
La expresion
es una fórmula o grupo de fórmulas (o sentencias) que utilizan
los argumentos para calcular uno o varios valores. El resultado de dicha
expresión es el valor que proporciona R en su salida y éste puede ser un
número, un vector, un gráfico, una lista. Una función devuelve el valor de la
última expresión evaluada.
Ejemplos:
<- function(x) { y = x + 4}
funcion_1
<- funcion_1(5)) (a
## [1] 9
En el caso siguiente, si se desea guardar el resultado en un objeto sólo se almacenará el rango (último valor impreso en consola).
<- function(muestra) { #El único argumento es un vector de datos
funcion_2 = mean(muestra, na.rm = T)
media = var(muestra, na.rm = T)
varianza = max(muestra, na.rm = T) - min(muestra, na.rm = T)
rango print(paste("Media:", round(media, 2)))
print(paste("Varianza:", round(varianza, 2)))
print(paste("Rango:", round(rango, 2)))
}
<- funcion_2(rnorm(40,5,16)) miValor
## [1] "Media: 8.67"
## [1] "Varianza: 224"
## [1] "Rango: 59.92"
miValor
## [1] "Rango: 59.92"
Para que guarde los tres resultados hay que especificar que se haga una lista o vector.
<- function(muestra) {
funcion_3 = mean(muestra, na.rm = T)
med = var(muestra, na.rm = T)
vari = max(muestra, na.rm = T) - min(muestra, na.rm = T)
rang # list(media = med, varianza = vari ,rango = rang)
c("Media" = med,
"Var" = vari,
"Rango" = rang)
}
<- funcion_3(1:20)
ej ej
## Media Var Rango
## 10.5 35.0 19.0
Los diferentes argumentos de las funciones se separan con ,
. Éstos pueden
tener un valor por defecto. Para indicarlo, en el momento de definir la nueva
función, se determina con el signo =
cuál es el valor que se usará si el
usuario no lo especifica explícitamente.
<- function(a, b, c = 4, d = FALSE) {
funcion_4 if (d == FALSE) {
<- a * b
x1 else {
} <- a * b + c
x1
}
x1 }
Para utilizar la función, no es necesario explicitar el nombre de cada argumento. R seguirá el orden de la lista de argumentos que se utilizó en la definición de la función. Así, es recomendable que los argumentos sin valores por defecto, se coloquen como últimos argumentos.
funcion_4(a = 2, b = 5)
## [1] 10
funcion_4(2, 5)
## [1] 10
# Especifica valores de 2, 5 y 3 para a, b y c, sin tener que aclarar
# los nombres de dichos argumentos
funcion_4(2, 5, 3)
## [1] 10
funcion_4(2, 5, 3, TRUE)
## [1] 13
En el caso de no asignar un valor a uno de los argumentos y optar por utilizar el valor por defecto, es necesario el uso de “d = “ pues en caso contrario el tercer argumento corresponde a c.
funcion_4(2, 5, d = TRUE)
## [1] 14
Ejercitación
Funciones
Genere una función que grafique una variable en función de otra y coloque nombre al eje x que por defecto sea: “mi eje x”