Sie sind auf Seite 1von 46

Introduccin al lenguaje

estadstico R

Por qu R?
Es un poderoso lenguaje de programacin para estadstica computacional y grficos

Es libre

Es multiplataforma: linu! "indo"s! mac

#iene una gran comunidad de usuarios

$uc%as libreras disponibles & '()* +++,

-a sintais es lo suficientemente lgica y simple que permite entender programas


simples sin mayor esfuer.o

/ntroduccin a R &0,
-a pgina "eb del proyecto: %ttp:11"""2r3project2org1

4lgunos libros disponibles:

$ic%ael 52 6ra"ley2 Statistical computing: an introduction to data analysis using S-Plus.


7iley! 89982

Peter :algaard2 Introductory Statistics with R2 ;pringer3<erlag! 89982

5o%n <er.ani2 Using R for introductory statistics2 6%apman and =all16R6! 899)2

72 >2 <enables and ?2 :2 Ripley2 Modern Applied Statistics with S-PLUS2 *rd edn2
;pringer! 0(((2

$aria Ri..o2 Statistical omputing with R2 6%apman @ =all16R6!


899A

B"en 5ones! Robert $aillardet! and 4ndre" Robinson2 Introduction to Scientic


Programming and Simulation Using R2 6%apman and =all16R6! 0 edition! $arc% 899(2

>orman $atloff2 !he Art of R Programming: !our of Statistical Software "esign2 >o
starc% press! 8900

0, :escargue R
:escargue e instale R para sus sistema del sitio: %ttp:11cran2R3project2org1

8, :escargue R ;tudio
:escargue e instale Rstudio para sus sistema del sitio: %ttp:11"""2rstudio2com1

/ntroduccin a R &8,
Cna de las maneras de entrada a R es a traDs de la ingresos de
comandos luego del smbolo del sistema2 Por ejemplo:
>demo(graphics)
le demostrar algunas de las capacidades grficas de R

Para salir use:


> q()
Save workspace image? [y/n/c]:

Por ra.ones de eficiencia! R no instala todas las funciones y


paquetes disponibles al iniciarse! slo los paquetes o libreras
bsicas que requiere para ejecutarse correctamente

Paquetes adicionales pueden cargarse usando el comando:


> library(datasets) #Contiene conjuntos de datos de
ejemplo

/ntroduccin a R &*,
Para Der la lista de los paquetes cargados use library()

R proporciona una interfa. para instalar paquetes disponibles en el


sitio de 6R4>2 -a funcin install.packages(paquete) instala el
paquete deseado en el computador2

Cna De. instalado un paquete debe cargarse en el ambiente de


trabajo usando library(paquete, o require(paquete)

Para obtener ayuda sobre algEn tpico use %elp&topico, o ?topico

En algunos casos puede ser necesario usar comillas para obtener la


ayuda deseada2 Por ejemplo:
> ?%%
Error: unexpected SPECIAL en "?%%"
> ?"%%"

/ntroduccin a R &',
;i no recuerda el nombre eacto del comando funcin use
help.search(funcin)2 Por ejemplo: help.search(mean)
deDuelDe muc%as pginas de ayuda donde se menciona en algEn
lado la palabra FmeanG

Para buscar slo en los nombres de las funciones use


apropos("funcin"). Bbtendr una lista ms corta y
probablemente ms releDante para lo que busca2

-a ayuda y manuales tambin puede Derse en formato %tml en un


naDegador usando help.start()2 #odas las llamadas siguientes a la
funcin help aparecern en el naDegador2

Para correr los ejemplos asociados a un comando copie y pegue de


la pgina de ayuda a la consola2 #ambin puede usar example()lo
que ejecuta todos los ejemplos asociados a la funcin2

Bbjetos de R
-os objetos en R poseen un modo que describe su contenido:

nulo &null,: un objeto Daco

lgico &logical,: #RCE o H4-;E

numrico&numeric,: *! 92IA(! sqrt&*,30

complejo &comple#,: 83*i

carcter &character,: J%olaG! Jc%aoG

K una clase que define su estructura:

Dector &$ector,!

matri. &matri#,!

arreglo &array,!

factor &factor,

series de tiempo &time series,!

marco de datos &data.frame,

listas &list,

#ipos de datos: Dectores
Es un Dector matemtico de elementos del mismo tipo como (TRUE,TRUE, FALSE, TRUE) o
(1,2,5,7,11)

El operador c&, sirDe para crear pequeLos Dectores


> a <-c(2,6,-4,9,18)
o equiDalentemente
> a =c(2,6,-4,9,18)

-os Dectores se pueden acceder a traDs de ndices lgicos o numricos y tambin a traDs de nombres
> notas<-c(18,16,20,17)
> na!s(notas)<-c("A#$a%o", "Ana", "&a%'a","(os!")
> notas
A#$a%o Ana &a%'a (os!
18 16 20 17
> notas)"Ana"*
16

;e pueden concatenar dos o ms Dectores


> a<-c(1,+,5)
> ,<-c(7,9,11)
> '-a%!s<-c(a,,)
> '-a%!s
)1* 1 + 5 7 9 11

Ejemplos de Procesamiento de <ectores en R
& Huente: Robert@6asella 8909,

#ipos de datos: $atrices
-a instruccin:
.<-at%'.($!c,n%o/=n,nco#=-)

6rea una matri. de n filas y p columnas cuyos elementos son los


contenidos en el Dector $ec &que se supone tiene n p elementos,

-os elementos son almacenados en orden de columna!

-as matrices se pueden manipular utili.ando el lgebra matemtica


usual de matrices o elemento por elemento2 Por ejemplo A 010 2 es
el producto matricial de las matrices A y % y A 1 2 es el producto
trmino a trmino2

=ay funciones para calcular matrices inDersas! Dalores y Dectores


propios! matrices diagonales! etc2
>at%'.(136,n%o/=2,nco#=+)
),1* ),2* ),+*
)1,* 1 + 5
)2,* 2 4 6

Ejemplos de Procesamiento de matrices en R
& Huente: Robert@6asella 8909,

#ipos de datos: 4rreglos
;on estructuras de datos que tienen
ms de dos ndices2 Por ejemplo! . =
a%%a4 (1350,c(2,5,5)) da como
resultado una tabla con tres entradas

-os componentes pueden manipularse


de la misma manera que los Dectores

Es conDeniente usar la funcin a--#4


para eDitar la.os de programacin y
%acer ms eficientes a los programas
> .
, , 1
),1* ),2* ),+* ),4* ),5*
)1,* 1 + 5 7 9
)2,* 2 4 6 8 10
, , 2
),1* ),2* ),+* ),4* ),5*
)1,* 11 1+ 15 17 19
)2,* 12 14 16 18 20
, , +
),1* ),2* ),+* ),4* ),5*
)1,* 21 2+ 25 27 29
)2,* 22 24 26 28 +0
, , 4
),1* ),2* ),+* ),4* ),5*
)1,* +1 ++ +5 +7 +9
)2,* +2 +4 +6 +8 40
, , 5
),1* ),2* ),+* ),4* ),5*
)1,* 41 4+ 45 47 49
)2,* 42 44 46 48 50

#ipo de datos: Hactores
Es un Dector de cadena de caracteres o enteros que se usan para especificar una
clasificacin discreta de los componentes de otros Dectores con la misma longitud2

-a principal diferencia con un Dector normal es la presencia de un atributo &#!$!#,


que se usa para indicar los Dalores posibles del factor

;e usa para representar Dariables cualitatiDas

R posee factores ordenados y no ordenados


Ejemplos que ilustran el uso de factores en R
& Huente: Robert@6asella 8909,

#ipo de datos: -istas
Cna lista es un objeto %ec%o de una coleccin de componentes u objetos de Darias
clases 2 Por ejemplo! una lista puede deriDarse de n objetos eistentes usando la
funcin
a=#'st(no,%!51=o,6!to1,no,%!52=o,6!to2, 777 no,%!5n=o,6!to
n)
> a8no,%!51 deDuelDe o retorna o,6!to1
a))1** retorna tambin objeto0

En R las listas se usan sobretodo para almacenar el resultado de una funcin en un


solo objeto2 6asi todas las funciones estndar en R deDuelDen un lista a la salida

;i las abreDiaturas permiten identificar a los componentes de forma Enica se pueden


abreDiar

Ejemplos de algunas caractersticas de las listas en R
& Huente: Robert@6asella 8909,

#ipo de datos: $arcos &9ata:%a!s,
Es una lista de Dariables todas de la misma longitud ms no necesariamente del
mismo tipo

Puede Derse en forma matricial y sus filas y columnas pueden etraerse de la misma
manera que se %ace con una matri.

El principal propsito de este tipo de objetos es importar datos desde un arc%iDo


eterno mediante la funcin %!a97ta,#!
Ejemplo de definicin de un marco de datos en R
& Huente: Robert@6asella 8909,

:istribuciones de probabilidad en R
#odas las distribuciones estndar estn disponibles con la siguiente conDencin: Cn
nombre nEcleo! 9'st! que identifica la distribucin de probabilidad y un prefijo que
identifica la funcin:

-: identifica la funcin de probabilidad acumulada &cdf, o funcin de


distribucin! P &' () #*. Por ejemplo! -9'st(.,-1,-2,77,

9: identifica la funcin de densidad probabilidad! es decir P&' ) #,2 Por


ejemplo! 99'st(.,-1,-2,77)

;: identifica el cuantil de la distribucin! es decir! el Dalor ms pequeLo


de + para el cual P&' () +* ,) p2 Por ejemplo ;9'st(-,-1,-2,777)

%: identifica la generacin de Dariables aleatorias de la distribucin dada2


Por ejemplo %9'st(n,-1,-2,777) produce n Dariables aleatorias con
la distribucin

:istribuciones de probabilidad en R
& Huente: Robert@6asella 8909,

4lgunos ejemplos estadsticos
R posee una etensa coleccin de
paquetes que cubren todo el espectro de la
estadstica: estadstica estndar!
descriptiDa! modelos generali.ados lineales!
modelos no paramtricos! etc2

-o bsico: media &puede ser acotada,!


!anM Darian.a &no sesgada! es decir! entre
n30,! $a%M desDiacin estndar! s9M
mediana! !9'anM cuantiles! ;<ant'#! y
resumen! s<a%4

<arias de las pruebas estadsticas clsicas


como igualdad de medias de la distribucin
normal &t7t!st,M igualdad de Darian.as
&$a%7t!st,2 Cse:
=!#-7s!a%c=(>t!st?) para Der la gran
gama disponible

Ejemplo: Probar que la media de una


muestra normal de Darian.a desconocida es
92

>o se puede rec%a.ar la %iptesis nula


> .=%no%(25)
> t7t!st(.)
@n! Sa-#! t-t!st
9ata3 .
t = 07+974, 9: = 24, --$a#<! = 076946
a#t!%nat'$! =4-ot=!s's3 t%<! !an 's
not !;<a# to 0
95 -!%c!nt con:'9!nc! 'nt!%$a#3
-072882965 074257848
sa-#! !st'at!s3
!an o: .
0706874416

Repaso: ;ignificancia estadstica
En estadstica! un resultado se considera significatiDo si es poco probable que el
resultado %aya ocurrido slo por a.ar si la %iptesis nula es Derdadera

El Dalor p es una estimacin de la significancia estadstica2 Es la probabilidad de que


un resultado en particular %aya ocurrido al a.ar si la %iptesis nula es Derdadera2

En relacin al Dalor de - o error tipo /! el Dalor p es el Dalor ms grande de - para el


cual no se puede rec%a.ar la %iptesis nula & .
o
,

-istas y los resultados de una prueba
-os resultados de las pruebas se almacenan en listas y uno puede acceder a sus
diDersos componentes
> %!s<#ta9o<-t7t!st(.)
> na!s(%!s<#ta9o)
)1* "stat'st'c" "-a%a!t!%" "-7$a#<!"
"con:7'nt" "!st'at!"
)6* "n<##7$a#<!" "a#t!%nat'$!" "!t=o9"
"9ata7na!"
> %!s<#ta9o8-7$a#<!
)1* 076945991
>

Ejemplo: correlacin
El tiempo entre erupciones del geyser old Hait%ful en Kello"stone &:a't=:<#),1* ,y
la duracin de las erupciones &:a't=:<#),2*) esta significatiDamente
correlacionada
> A:a't=:<# BCa%a !nt!n9!% ;<! =a4 !n !st! con6<nto 9! 9atos
sta%t'nD =tt-9 =!#- s!%$!% 777 9on!
> co%7t!st(:a't=:<#),1*,:a't=:<#),2*)
C!a%sonEs -%o9<ct-o!nt co%%!#at'on
9ata3 :a't=:<#), 1* an9 :a't=:<#), 2*
t = +47089, 9: = 270, --$a#<! < 272!-16
a#t!%nat'$! =4-ot=!s's3 t%<! co%%!#at'on 's not !;<a# to 0
95 -!%c!nt con:'9!nc! 'nt!%$a#3
078756964 079210652
sa-#! !st'at!s3
co%
079008112

Ejemplo: Pruebas >o paramtricas
NolmogoroD3;mirnoD para
probar concordancia con una
distribucin o entre
muestras&Fs7t!st,

>ormalidad de ;%apiro
&s=a-'%o7t!st,

=omogeneidad de NrusOal3
7allis &F%<sFa#7t!st,

Prueba de rangos de
7ilOcoon &/'#co.7t!st,

Por ejemplo! para probar la


normalidad de los datos en
fait%ful:
Fs7t!st(6'tt!%(:a't=:<#),1*),-no%)
@n!-sa-#! Go#oDo%o$-S'%no$ t!st
9ata3 6'tt!%(:a't=:<#), 1*)
H = 079486, --$a#<! < 272!-16
a#t!%nat'$! =4-ot=!s's3 t/o-s'9!9
> s=a-'%o7t!st(:a't=:<#),2*)
S=a-'%o-I'#F no%a#'t4 t!st
9ata3 :a't=:<#), 2*
I = 079221, --$a#<! = 17016!-10
> /'#co.7t!st(:a't=:<#),1*)
I'#co.on s'Dn!9 %anF t!st /'t= cont'n<'t4
co%%!ct'on
9ata3 :a't=:<#), 1*
J = +7128, --$a#<! < 272!-16
a#t!%nat'$! =4-ot=!s's3 t%<! #ocat'on 's not
!;<a# to 0

B5B: <alores por defecto en las funciones
-a mayora de las funciones de R requieren argumentos y casi todas tienen Dalores
por defecto para muc%os de ellos

-a ayuda de cada funcin especfica esto2

Por ejemplo! para "ilco2test:


/'#co.7t!st(., 4 = KULL,a#t!%nat'$! = c("t/o7s'9!9", "#!ss",
"D%!at!%"),< = 0, -a'%!9 = FALSE, !.act = KULL, co%%!ct =
TRUE, con:7'nt = FALSE, con:7#!$!# = 0795, 777)

Prficos en R &/,
Btra de las Dentajas de R es la gran
gama de posibilidades grficas que
posee2

Cn buen tratamiento del asunto grfico


se consigue en <enables @ Ripley
&899),2 =ay libros enteros dedicados a
este tema: $urrel &899),! ;arOar Q
&899A,! 7icOmanQ &899(,2

-os comandos principales son -#ot e


'aD! que contienen muc%simas
posibilidades de configuracin si bien
las salidas por defecto no son muy
impresionantes2 Por ejemplo:
-#ot(:a't=:<#)

Para Der el nEmero de parmetros que


puede estar inDolucrado use -a%()2
Q :isponibles en la carpeta de :ropbo

Prficos en R &//,
-as operaciones grficas enDan su salida a un dispositiDo &9!$'c!, que puede ser
una Dentana grfica que aparece automticamente cuando se llama a un comando
grfico &como en el ejemplo anterior, o un arc%iDo donde el resultado se almacena
para otros usos2

En linu una nueDa Dentana grfica se obtiene con el comando .11()2 En "indo"s!
con /'n7D%a-=()2 El tamaLo! posicin color! etc2 de los dispositiDos grficos se
puede configurar2

6uando el dispositiDo es un arc%iDo! se crea por una funcin con nombre de acuerdo
a su controlador! es decir! eiste una funcin llamada pdf! jpeg! png! etc2 que
producen sus respectiDas salidas

Entre los comandos grficos ms comunes tenemos:

%ist! para %acer y posiblemente graficar %istogramas

points! para insertar puntos en un grfico ya eistenteM lines para aLadir


grficos de lineas a uno eistente

barplot! para %acer grficos de barra

boplot! para grficos de caja



Ejemplo grfico en R
6-!D(:'#!=":a't=76-D")
-a%(:%o/=c(1,2),a%=c(4,2,2,
1))
='st(:a't=:<#),1*,nc#ass=21,c
o#="D%!4",a'n="",
.#a,=na!s(:a't=:<#))1*)
='st(:a't=:<#),2*,nc#ass=21,c
o#="/=!at",a'n="",
.#a,=na!s(:a't=:<#))2*)
9!$7o::()

Entradas y ;alidas en R
4l anali.ar conjuntos de datos grandes! estos son almacenados en en arc%iDos
eternos2

-a forma ms comEn de ingresar arc%iDos de datos en R es a traDs de arc%iDos de


teto planos! separados por tabuladores! espacios o comas2

Para leer:

matrices o Dectores se usa la funcin scan2

marcos de datos la funcin %!a97ta,#!2

-a librera :o%!'Dn contiene comandos que permiten leer datos almacenados en


formatos de otros paquetes estadsticos2 Por ejemplo! %!a97s-ss

Para guardar todos los objetos de R en un arc%iDo 4;6// o binario se usa sa$!2

Para guardar un marco de datos en 4;6// se usa /%'t!7ta,#!



Ejemplo: lectura de datos &0,
$uc%os de los datos oficiales &?6<! />E,
Dienen como tablas en ecel y utili.an ! en De.
de punto para separacin decimal2
02 4brir los datos en la %oja de clculo y
guardarlos en formato 2csD2

Ctili.ar como separador de campo JMG

Puardar los datos sin la utili.acin de


J2G para separacin de miles

Eliminar columnas Dacas


82 Editar el arc%iDo en un editor de teto para
Derificar formato! acomodar encabe.ado y
borrar lineas sobrantes
*2 -eer usando el comando apropiado
&read2table o sus Dariantes,


Ejemplo: lectura de datos &8,
<n'c'-'os<-%!a97cs$2("Co,#ac'on4-o97cs$")
=!a9(<n'c'-'os)
st%(<n'c'-'os)
s<a%4(<n'c'-'os)
,a%-#ot(<n'c'-'os8H!ns'9a9,na!s=<n'c'-'os8&<n'c'-'o,#as=2,c!.7na!s=077,
a'n="H!ns'9a9 -o% &<n'c'-'os (Esta9o &L%'9a)",co#=%a'n,o/(2+))

4dministracin de Bbjetos
El espacio de trabajo en R contienen los datos y objetos que %ayan sido creados
durante la sesin de trabajo2 ;i usted desea que estos objetos se guarden! debe
almacenar el ambiente de trabajo antes de salir del R2

Para salir de R use quit&,2


> ;<'t()
Sa$! /o%Fs-ac! 'aD!A )4MnMc*3

Responder que si almacena en el directorio de trabajo todos los objetos y datos2 :e


lo contrario! nada de lo que reali. en la sesin sera almacenado

Para guardar su trabajo en cualquier momento de su sesin use sa$!7'aD!()

Para obtener la lista de objetos en el directorio de trabajo puede usar las funciones
#s()! o,6!ct()! ,%o/s!En$()2

Para borrar objetos de su directorio de trabajo use el comando %

Para cambiar el directorio de trabajo use s!t/92 Para Der cual es el directorio actual
de trabajo use D!t/92 Es una buena idea mantener diferentes directorios de trabajo
para diferentes proyectos o tareas2

:atos faltantes

>4 &not aDailable, y >a> &not a number,

is2na&, se usa para Derificar si un objeto es >4

is2nan&, se usa para Derificar si un objeto es >a>

Cn Dalor >a> es tambin >4 pero lo contrario no es Derdadero


> x <- c(1, 2, NA, 10, 3)
> is.na(x)
[1] FALSE FALSE TRUE FALSE
> is.nan(x)
[1] FALSE FALSE FALSE FALSE
> x <- c(1, 2, NaN, NA, 4)
> is.na(x)
[1] FALSE FALSE TRUE TRUE
> is.nan(x)
[1] FALSE FALSE TRUE FALSE

Eliminar datos faltantes
> x <- c(1, 2, NA, 4, NA, 5)
> y <- c("a", "b", NA, "d", NA, "f")
> good <- complete.cases(x, y)
> good
[1] TRUE TRUE FALSE TRUE FALSE TRUE
> x[good]
[1] 1 2 4 5
> y[good]
[1] "a" "b" "d" "f"
> airquality[1:6, ]
Ozone Solar.R Wind Temp Month Day
1 41 190 7.4 67 5 1
2 36 118 8.0 72 5 2
3 12 149 12.6 74 5 3
4 18 313 11.5 62 5 4
5 NA NA 14.3 56 5 5
6 28 NA 14.9 66 5 6
> good<-complete.cases(airquality)
> airquality[good, ][1:6, ]
Ozone Solar.R Wind Temp Month Day
1 41 190 7.4 67 5 1
2 36 118 8.0 72 5 2
3 12 149 12.6 74 5 3
4 18 313 11.5 62 5 4
7 23 299 8.6 65 5 7
8 19 99 13.8 59 5 8
> x<- c(1, 2, NA, 4, NA, 5)
> mean(x)
[1] NA
> bad <- is.na(x)
> x[!bad]
[1] 1 2 4 5
> mean(x[!bad])
[1] 3

Hunciones en R &/,
-a sintais para definicin de una funcin es:
:<nct'on(#'sta 9! a%D<!ntos) N
!.-%!s'on!s
%!t<%n($a#o%) O

El siguiente es un ejemplo de una funcin que simula el lan.amiento de n dados no


cargados y deDuelDe su suma:
> s<9a9os<-:<nct'on(n)N
P F<-sa-#!(136,s'Q!=n,%!-#ac!=T)
P %!t<%n(s<(F)) O

Cna De. en R la funcin se usa como cualquier otra:


> s<9a9os(2)
)1* 7
>s<9a9os(2)
)1* 11
> a <- s<9a9os(100)
> aM100
)1* +75+

Hunciones en R &//,
-a definicin de una funcin puede
%acerse por Darios mtodos:

;i la funcin es corta! se escribe


directamente en la consola

Escriba la funcin en un editor


de teto y copie y pegue la
funcin en la consola

Escriba la funcin en un editor


de teto y utilice el comando
so<%c!("no,%! 9!#
a%c='$o")

Para Der el cdigo asociado a cualquier


funcin en R escriba el nombre de la
funcin2 Por ejemplo:

<alores por defecto! Dalor por retorno


R Dar
function &! y S >C--! na2rm S H4-;E! use,
T
if &missing&use,,
use U3 if &na2rm,
Fna2or2completeF
else FeDeryt%ingF
na2met%od U3 pmatc%&use! c&Fall2obsF!
Fcomplete2obsF! Fpair"ise2complete2obsF!
FeDeryt%ingF! Fna2or2completeF,,
if &is2data2frame&,,
U3 as2matri&,
else stopifnot&is2atomic&,,
if &is2data2frame&y,,
y U3 as2matri&y,
else stopifnot&is2atomic&y,,
2/nternal&coD&! y! na2met%od! H4-;E,,

-ibreras &paquetes, en R
El R esta diseLado con un nEcleo pequeLo que contiene el paquete base y los
recomendados que satisface la mayora de las tareas estadsticas rutinarias pero con
la capacidad de aLadir paquetes o libreras que implementan otras funcionalidades2

Para Der la lista de los paquetes instalados use #',%a%4()

R proporciona una interfa. para instalar paquetes disponibles en el sitio de 6R4>2


-a funcin 'nsta##7-acFaD!s(-a;<!t!) instala el paquete deseado en el
computador2

Cna De. instalado un paquete debe cargarse en el ambiente de trabajo usando


#',%a%4(-a;<!t!) o %!;<'%!(-a;<!t!)

-a ayuda asociada a un paquete especfico! incluso si aun no se %a cargado se


obtiene usando =!#-(-acFaD!=-a;<!t!)2 Cna De. cargada la ayuda se obtiene
de la manera usual! usando A-a;<!t!

Estructuras de control en R

Estructuras condicionales:
': (!.-%!s'Rn5#oD'ca) N
!.-%!s'Rn 1
7777
O !#s! N
!.-%!s'Rn 2

7777
O

Repita mientras:
/='#! (!.-%!s'Rn5#oD'ca) N
!.-%!s'Rn 1
7777
O

;alte una iteracin:

n!.t

;alga de la funcin y deDuelDa el control

return

/nterrumpa un la.o

,%!aF

-a.os repita para:


:o% (. 'n $!cto%) N
!.-%!s'Rn 1
777
O

Ejemplo if
#Calculo de raices cuadrticas de
#un polinomio de 2do grado
#(ax^2+b^x+c)
quad <- function(a, b, c) {

discrim <- b^2 - 4*a*c

if (discrim > 0) {
raices <- (-b + c(1,-1) *
sqrt(discrim))/(2*a)
} else if (discrim == 0) {
raices <- -b/(2*a)
} else {
raices <- NULL
}
return(raices)
}
> source('quad3.r')
> quad(1,1,2)
NULL
> quad(1,2,1)
[1] -1
> quad(1,6,9)
[1] -3

Ejemplo for
> nfact(2)
[1] 2
> nfact(3)
[1] 6
> nfact(10)
[1] 36200
> !rod(1"10)
[1] 36200
> factor#a$(10)
[1] 36200
nfact<-function(n){
n_factorial<-1
for (i in 1:n) {
n_factorial<-
n_factorial*i
}
n_factorial
}

Ejemplo "%ile
#Cuenta cuantos sellos salen antes de que
ocurra la
#primera cabeza en el lanzamiento de una
moneda
lanzarMoneda<-function() {
moneda<-"sello"
contador<--1
while (moneda=="sello") {
moneda<-sample(c("cara","sello"),1)
contador<-contador + 1
}
return(contador)
}
>
source('%&'ro!(o)&estad#st#ca&*2013&e+e,!
$o-.#$e./')
> $an0ar1oneda()
[1] 0
> $an0ar1oneda()
[1] 2
> $an0ar1oneda()
[1] 1

-a.os Dectori.ados &0,

lapply: Recorre una lista y


evala una funcin en cada
uno de los elementos

#oma como argumento una lista y


una funcin2

:eDuelDe siempre una lista

-as funciones pueden ser


definidas por el usuario
> x <- list(a = 1:5, b =
rnorm(10))
> lapply(x,mean)
$a
[1] 3
$b
[1] 0.02877935

sapply: Igual que lapply pero


trata de simplificar el resultado

;i el resultado es una lista donde


cada elemento es un Dector de
longitud 0! deDuelDe un Dector

;i el resultado es una lista con


elementos iguales a Dectores de
la misma longitud deDuelDe una
matri.
> x <- list(a = 1:4, b =
rnorm(10), c = rnorm(20, 1), d =
rnorm(100, 5))
> lapply(x, mean)
$a
[1] 2.5
$b
[1] 0.1400532
$c
[1] 0.8055378
$d
[1] 5.036773
> sapply(x,mean)
a b c
d
2.5000000 0.1400532 0.8055378
5.0367734
> x <- matrix(rnorm(50),
10, 5)
> apply(x, 2, mean)
[1] -0.17703881 -0.38902837
0.01257755 -0.14034614
0.02349015
> apply(x, 1, mean)
[1] -0.03547515
0.21406030 -0.29723066
0.35266231 -0.59592218
-0.79473503 0.12467859
0.05889988 -0.23704606
-0.13058325

apply: aplica una funcin


sobre los mrgenes de un
arreglo

<er tambin: rowSums.


rowMeans,
colSums,colMeans

Estos Eltimos son ms


eficientes

-a.os Dectori.ados &8,

tapply: aplica una funcin sobre


subconjuntos de un vector
> str(tapply)
function (X, INDEX, FUN =
NULL, ..., simplify = TRUE)

V es un Dector

/>:EV un factor o lista de factores

HC> la funcin a ser aplicada

222 otros argumentos de la funcin

simplifica o no el resultado
> x <- c(rnorm(10), runif(10),
rnorm(10, 1))
> f <- gl(3, 10)
> f
[1] 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2
2 2 2 2 3 3 3 3 3 3 3 3 3 3
Levels: 1 2 3
> tapply(x, f, mean)
1 2 3
-0.2199269 0.4173764 1.2579538

split: toma un vector u otro objeto y lo


divide en grupos de acuerdo a lo
indicado por un factor
> str(split)
function (x, f, drop =
FALSE, ...)

es un Dector! lista o marco de


datos

f es un factor

drop indica si niDeles Dacos de


factor deben utili.arse
> x <- c(rnorm(10), runif(10), rnorm(10, 1))
> f <- gl(3, 10)
> split(x, f)
$`1`
[1] -1.4002314 -0.2448079 0.1700568
0.5344474 1.3789638 0.2350451 0.3791648
1.2844029 0.8502955 -0.5888849
$`2`
[1] 0.82494456 0.89006924 0.57760123
0.07483717 0.23774043 0.30995127 0.13311322
0.16745947 0.87912322 0.19828140
$`3`
[1] 0.2630163 1.6978375 0.6139689 0.0930097
0.4117059 1.1352928 1.8389937 0.6021710
1.2284313 0.4363933

Ejemplo: la.os Dectori.ados con data frames
> library(datasets)
> head(airquality)
Ozone Solar.R Wind Temp Month Day
1 41 190 7.4 67 5 1
2 36 118 8.0 72 5 2
3 12 149 12.6 74 5 3
4 18 313 11.5 62 5 4
5 NA NA 14.3 56 5 5
6 28 NA 14.9 66 5 6
> s <- split(airquality, airquality$Month)
> lapply(s, function(x) colMeans(x[, c("Ozone", "Solar.R", "Wind")]))
$`5`
Ozone Solar.R Wind
NA NA 11.62258
$`6`
Ozone Solar.R Wind
NA 190.16667 10.26667
$`7`
Ozone Solar.R Wind
NA 216.483871 8.941935
$`8`
Ozone Solar.R Wind
NA NA 8.793548
$`9`
Ozone Solar.R Wind
NA 167.4333 10.1800
> sapply(s, function(x) colMeans(x[, c("Ozone", "Solar.R", "Wind")]))
5 6 7 8 9
Ozone NA NA NA NA NA
Solar.R NA 190.16667 216.483871 NA 167.4333
Wind 11.62258 10.26667 8.941935 8.793548 10.1800
> sapply(s, function(x) colMeans(x[, c("Ozone", "Solar.R", "Wind")],na.rm =
TRUE))
5 6 7 8 9
Ozone 23.61538 29.44444 59.115385 59.961538 31.44828
Solar.R 181.29630 190.16667 216.483871 171.857143 167.43333
Wind 11.62258 10.26667 8.941935 8.793548 10.18000

Referencias

5ones!B"enM Robert $aillardet and 4ndre" Robinson2 Introduction to Scientic


Programming and Simulation Using R2 6%apman and =all16R6! 0 edition! $arc%
899(2

Peng! Roger2 6omputing for :ata 4nalysis! 6oursera 6ourse:


%ttps:11"""2coursera2org1course1compdata

Ri..o! $ara2 899A2 Statistical omputing with R2 #aylor @ Hrancis2 6aptulo 02

Robert! 6%ristian y Peorge 6asella2 89092 Introducing Monte arlo Methods with R2
;pringer2 6aptulo 02

<er.ani! 52 Using R for introductory statistics2 6%apman and =all16R6! 899)2