El arte de programar en R Un leguaje para la estadística - page 78

CAPÍTULO 4. ESTRUCTURAS DE CONTROL Y MANEJO DE DATOS 75
r
<-
numeric
()
# vector numerico vacío para resultados
for
(elt
in
misDatos) {
r
<-
c
(r,
haz_promedio
(elt))
# note el uso de c()
}
names
(r)
<-
names
(misDatos)
# Esto sólo es 'azúcar' estética
r
## uno
dos tres
## 25.652 0.597 442.572
4.3.3. Operaciones marginales en matrices y la función
apply()
Como objetos numéricos, las matrices resultan útiles para hacer diversidad
de cálculos. Una de sus principales características es que tanto sus renglones
como sus columnas pueden ser tratados como elementos individuales. De esta
forma, hay operaciones que se efectúan para todas sus columnas o para todos
sus renglones; a estas se les denominará
operaciones marginales
. El lenguaje tiene
algunas de estas operaciones implementadas directamente, entre ellas están las
funciones:
rowSums()
,
colSums()
,
rowMeans()
y
colMeans()
. Para ejemplificar,
se calcularán las sumas de las columnas de una matriz y los promedios de sus
renglones.
# Se hace una matriz arbitraria de 3 renglones y 5 columnas,
# con rbind, que la construye por renglones:
(mm
<-
rbind
(
5
:
9
,
runif
(
5
,
10
,
20
),
c
(
2
,
-
2
,
1
,
6
,
-
8
)))
##
[,1] [,2] [,3] [,4] [,5]
## [1,] 5.00 6.00 7.00 8.00 9.00
## [2,] 18.76 17.41 10.05 18.43 17.36
## [3,] 2.00 -2.00 1.00 6.00 -8.00
colSums
(mm)
## [1] 25.76 21.41 18.05 32.43 18.36
rowMeans
(mm)
## [1] 7.0 16.4 -0.2
Estas operaciones, que se tienen implementadas directamente, evitan mu-
cha programación que se tendría que hacer con ciclos y operaciones individua-
les con los elementos de la matriz.
El lenguaje provee además la posibilidad de construir el mismo tipo de ope-
ración marginal para el caso general de cualquier función, mediante la función
apply()
. Por ejemplo, la función
sd()
, calcula la desviación estándar para un
conjunto de números dados como un vector numérico. Si se quisiera aplicar
1...,68,69,70,71,72,73,74,75,76,77 79,80,81,82,83,84,85,86,87,88,...198
Powered by FlippingBook