Introducción
Una función function es un bloque de código que sólo se ejecuta cuando se le llama. Puede pasar datos, conocidos como parámetros, a una función. R tiene una gran cantidad de funciones integradas y el usuario puede crear sus propias funciones. En R, una función es un objeto, por lo que el intérprete de R puede pasar el control a la función, junto con los argumentos que pueden ser necesarios para que la función realice las acciones. La función, a su vez, realiza su tarea y devuelve el control al intérprete, así como cualquier resultado que pueda estar almacenado en otros objetos.
function es del tipo:
funcion = function(x,y){
x + y
}
Derivado de la definición anterior, se calcula lo siguiente:
# Sean: "no es necesario poner x e y"
funcion(x = 9, y = 8)
## [1] 17
También es posible usarlo con números complejos:
# Sea
a = 9 + 3i
b = 1 - 4i
# para este caso se omitió x e y.
funcion(a, b)
## [1] 10-1i
Una function puede ser un gráfico, por ejemplo, se hará uso del data “iris”:
# Se carga "iris", preinstalado en R
data(iris)
# se define la "function"
mi_grafica = function(x, y, type = "l"){
plot(x, y, type = type)
}
# Se grafica, nótese que no es necesario poner type, pero sí los valores x e y.
mi_grafica(iris$Sepal.Length,
iris$Sepal.Width)
Antes de avanzar, recomiendo intentar agregar color a la function función y marcará error, es por esto que se presente el siguiente ejemplo. Con uso del data “iris”, se realizará el enriquecimiento de function con el argumento “…”. Este argumento “…” se utiliza si no sabemos a priori el número de parámetros que le vamos a pasar a una function. Las funciones genéricas también hacen uso del argumento “···”. Esto significa que pueden llevar a cabo esa operación, pero sobre diferentes tipos de objetos (vectores, dataframe, listas, etc), por ejemplo, plot es una función genérica.
# De la function anterior, se desea agregar color (col), no permitiría con la función tal como se definió, sin los "...", sin embargo, la solución sería el argumento "..." que no sólo permite colores, también por ejemplo, agregar títulos de x e , se cambió el type de l (línea) a p (punto) para distinguir más fácil ambas gráficas.
mi_grafica = function(x, y, type = "p", ...){
plot(x, y, type = type, ...)
}
# El argumento "..." permite agregar nuevos parámetros como color
mi_grafica(iris$Sepal.Length,
iris$Sepal.Width,
col = "turquoise",
xlab = "Length",
ylab = "Width")