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

CAPÍTULO 4. ESTRUCTURAS DE CONTROL Y MANEJO DE DATOS 76
esta función a todos los renglones o a todas las columnas de la matriz, y consi-
derando que la matriz tiene dos margenes: el de los renglones -primer índice:
número de margen 1-, y el de las columnas -segundo índice: número de margen
2-, el asunto se puede resolver así:
# para los renglones
apply
(mm,
1
, sd)
# el 1 es el margen: renglones
## [1] 1.581 3.603 5.215
# para las columnas
apply
(mm,
2
, sd)
# el 2 es el margen: columnas
## [1] 8.940 9.754 4.606 6.673 12.925
Para la función
apply()
, no es necesario que la función a aplicar esté prede-
finida, ni que el resultado de esa función sea un único número. Para clarificar
esto, se propone el siguiente ejemplo:
# una función que toma un vector arbitrario y multiplica cada
# elemento, por su posición en el vector:
ff
<-
function
(
v
) v
*
(
1
:
length
(v))
# probemos la función:
ff
(
c
(
2
,
4
,
6
,
8
))
## [1] 2 8 18 32
# Ahora la aplicaremos a todas las columnas de la matriz
apply
(mm,
2
, ff)
##
[,1] [,2] [,3] [,4] [,5]
## [1,] 5.00 6.00 7.00 8.00 9.00
## [2,] 37.53 34.82 20.11 36.85 34.73
## [3,] 6.00 -6.00 3.00 18.00 -24.00
El resultado ha sido una matriz, pero cada una de las columnas de esta
nueva matriz es el resultado de aplicar la función
ff()
, recién creada, a cada
una de las columnas de la matriz original.
4.3.4. Clasificaciones y uso de la función
split()
Generalmente, aunque los datos con los que se quiere trabajar están dados
en tablas, no están organizados de la manera que se pretende trabajar sobre
ellos. La función
split()
, permite clasificar los datos, típicamente dados como
un vector, o como un
data frame
. Para explicar el uso de esta función se recurrirá
a un ejemplo. Supóngase que los datos, que se muestran en la Fig. 4.1, se tienen
en un archivo separado por comas: Precipitaciones.csv. Este archivo contiene
1...,69,70,71,72,73,74,75,76,77,78 80,81,82,83,84,85,86,87,88,89,...198
Powered by FlippingBook