3.8 Digresión: creación de funciones
En R hay miles de funciones que pueden aplicarse a un vector. Unas cuantas de las más comunes que pueden aplicarse a vectores númericos son:
fivenum(x) # los "cinco números característicos" de un vector
mean(x)
max(x)
median(x)
sum(x)
prod(x)
Sin embargo, por muchas funciones que tenga R para operar sobre vectores, seguramente falta aquella que resolvería un problema dado: por ejemplo, cómo sumar los cuadrados de unos números. Aunque forme parte de la programación en R, asunto que veremos más adelante, es conveniente adelantar cómo crear nuevas funciones en R. Por ejemplo:
x <- 1:10
suma.cuadrados <- function(x) sum(x*x)
suma.cuadrados(x)
## [1] 385
El código anterior crea una nueva función, suma.cuadrados
que suma los cuadrados de un vector. La nueva función es un objeto más de R, que aparece en la pestaña Environment
de RStudio y en los listados de ls()
. Queda en memoria para ser utilizada posteriormente.
Si no existiese prod
se podría programar: usa log
, exp
y sum
para crear una función, mi.prod
que multiplique los elementos de un vector (de números, por el momento, >0).
Crea una función que cuente el número de valores negativos (<0) del vector que se le pase como argumento.
Por supuesto, a menudo queremos crear funciones que no se resuelvan en una única línea, como la de arriba. Cuando el cuerpo de la función sea más complejo, hay que encerrarlo en llaves, {}
.
media <- function(x){
longitud <- length(x)
suma <- sum(x)
suma / longitud
}