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
}