3.6 Operaciones matemáticas y vectorización
R puede ser usado como una calculadora:
2+2
## [1] 4
x <- 4*(3+5)^2
x / 10
## [1] 25.6
En R se puede operar sobre vectores igual que se opera sobre números. De hecho, en R, un número es un vector numérico de longitud 1:
c(length(2), length(x))
## [1] 1 1
Así que se pueden hacer cosas tales como:
x <- 1:10
2*x
2*x + 1
x^2
x*x
Operaciones como las anteriores están vectorizadas, i.e., admiten un vector como argumento y operan sobre cada uno de los elementos. Generalmente, las operaciones vectorizadas son muy rápidas en R. Muchos problemas de rendimiento en R se resuelven, de hecho, utilizando versiones vectorizadas del código ineficiente16.
Comprueba que log
es una función vectorizada aplicándosela a x
.
Calcula el valor medio de la longitud de los pétalos de iris
usando mean
.
Repite el ejercicion anterior usando sum
y length
.
Suma un millón de términos de la fórmula de Leibniz] para aproximar π. Pista: crea primero un vector con los índices (del 0 al 1000000) y transfórmalo adecuadamente.
Si x <- 1:10
e y <- 1:2
, ¿cuánto vale x * y
? ¿Qué pasa si y <- 1:3
?
La operación a la que se refiere el ejercicio anterior se denomina reciclado de vectores. Para aprender más sobre el reciclado de vectores, puede consultar, por ejemplo, http://www.hep.by/gnu/r-patched/r-lang/R-lang_41.html
].
De hecho, uno de los errores más frecuentes de los novatos en R que tienen experiencia previa en lenguajes de programación tales como Java, C o Matlab es utilizar código no vectorizado: blucles
for
y similares. En R se prefiere casi siempre recurrir a la vectorización.↩