Академический Документы
Профессиональный Документы
Культура Документы
en R
Tabla de contenido
Prefacio 0
Introduccin a R 1
Instalacin 1.1
Introduccin a la interface de R 1.2
Primeros pasos con R 2
Introduccin de datos 2.1
Evaluacin 2.2
Objetos en R 2.3
Nmeros 2.4
Atributos 2.5
Creando vectores 2.6
Mezclando objetos 2.7
Coercin explcita 2.8
Matrices 2.9
Listas 2.10
Factores 2.11
Valores indefinidos 2.12
Data frames 2.13
Nombres 2.14
Importar y exportar datos en R 3
Lectura y escritura de datos 3.1
Leyendo archivos con read.table() 3.2
Leyendo grandes conjuntos de datos 3.3
Calculando los requerimientos de memoria 3.4
Uso del paquete readr 3.5
Uso de formato de texto y binario para almacenar datos 4
Uso de dput() y dump() 4.1
Formatos binarios 4.2
Interfaces con el Mundo Exterior 5
Conexiones con archivos 5.1
2
Programacin en R
3
Programacin en R
Funciones en R 10.1
Nuestra primera funci?n 10.2
Correspondencia en los argumentos 10.3
Evaluacin lazy 10.4
El argumento ... 10.5
Argumentos detrs de ... 10.6
4
Programacin en R
Prefacio 5
Programacin en R
Introduccin a R
Introduccin a R 6
Programacin en R
Introduccin a R
Instalacin
Instalacin de R en Mac
Instalacion de R en Windows
Instalacin de RStudio
Instalacin 7
Programacin en R
Instalacin 8
Programacin en R
Introduccin a la interface de R
Una vez instalado R abriremos RStudio para familiarizarnos con el entorno. En el siguiente
video encontraremos como escribir archivos R y como configurar el IDE para que reconozca
nuestro directorio de trabajo.
Introduccin a la interface de R 9
Programacin en R
Introduccin de datos
En el prompt de R escribiremos las expresiones. El smbolo <- s el operador de
asignacin.
> x <- 1
> print(x)
[1] 1
> x
[1] 1
[1] "hello"
El carcter # indica que es un comentario. Cualquier cosa escrita a la derecha del mismo
ser ignorado. Este s el nico tipo de comentario en R. A diferncia de otros lenguajes R
no soporta los comentarios multilnia y por bloques.
Introduccin de datos 11
Programacin en R
Evaluacin
Cuando un expresin correcta es introducida en la consola, esta es evaluada y el resultado
de la expresin es devuelto. El resultado puede ser auto-printed:
[1] 5
[1] 5
[1] 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
Los nmeros entre corchetes no forman parte del vector en s mismo, sino que se trata
nicamente de informacin para la impresin por pantalla.
Evaluacin 12
Programacin en R
Evaluacin 13
Programacin en R
Objetos en R
R tiene cinco tipos bsicos de objetos:
character
numeric (nmero real)
integer
complex
logical (True/False)
Pero obviamente, como en cualquier buena regla, existe una excepcin, esta s con los
objetos de la clase lista. Una lista es representada como un vector pero puede contener
objetos de diferentes clases. Es por esto, que nosotros utilizaremos con mayor frecuncia
este tipo de objeto.
Objetos en R 14
Programacin en R
Nmeros
Los nmeros en R son tratados como objetos de tipo numeric (nmeros reales de doble
precisin). Esto quiere decir que si vemos en R nmeros com "1" or "2" nos puede llevar a
pensar que estamos tratando con nmeros enteros pero, en realidad detrs de bastidores R
los representa como numeric (algo como "1.00" or "2.00"). Esto no s importante en la
mayora de los casos... excepto cuando s lo s.
Existe un tipo especial de nmero Inf que representa infinito. Esto nos permite representar
entidades como 1/0. As pues, Inf puede ser utilizado en clculos de tipo: 1 / Inf que es igual
a 0.
El valor NaN representa un valor indefinido ("not a number"); por ejemplo 0 / 0; NaN puede
ser considerado como un valor no definido (lo veremos en prximos captulos).
Nmeros 15
Programacin en R
Atributos
Los objetos en R pueden tener atributos, estos sn como metadatos para el objeto. Estos
metadatos pueden ser muy tiles ya que nos proporcionan informacin del objeto. Por
ejemplo, los nombres de columna en un data frame nos proporcionan informacin de lo que
contiene cada columna. Algunos ejemplos de atributos en objetos R son:
names, dimnames
dimensions (en matrices, arrays)
class (e.g. integer, numeric)
length
otros atributos/metadatos definidos por el usuario
A los atributos de un objeto si los hay, se puede acceder mediante la funcin attributes(). No
todos los objetos contienen atributos, en este caso la funcin attributes() devolver NULL.
Atributos 16
Programacin en R
Creando vectores
La funcin c() puede ser usada para crear objetos.
[1] 0 0 0 0 0 0 0 0 0 0
Creando vectores 17
Programacin en R
Mezclando objetos
Existen ocasiones en las que nos encontramos diferentes clases de objetos R mezclados.
Algunas veces esto sucede por accidente pero tambin puede darse el caso de que haya
sido intencionadamente. Obsrvese detenidamente el siguiente cdigo:
> class(y)
[1] "character"
[1] 1 2
> class(y)
[1] "numeric"
> class(y)
[1] "character"
Mezclando objetos 18
Programacin en R
En todos los casos anteriores hemos mezclados objetos de diferentes clases en un vector.
No obstante, recordemos que la nica regla en los vectores es que no podemos mezclas
objetos de diferentes clases. Cuando esto sucede, se pone en marcha la coercio para que
cada elemento del vector sen de la misma clase.
En el ejemplo presentado hemos visto el efecto conocido como coercion implcita. Con este
mecanismo R intenta encontrar un manera de representar todos los objetos de una forma
razonable.
Mezclando objetos 19
Programacin en R
Coercin explcita
El mecanismo de coercion puede ser hecho de forma explcita con la funcin as.* si es
posible.
[1] "integer"
> as.numeric(x)
[1] 0 1 2 3 4 5 6
> as.logical(x)
> as.character(x)
[1] NA NA NA
> as.logical(x)
Coercin explcita 20
Programacin en R
[1] NA NA NA
> as.complex(x)
[1] NA NA NA
Coercin explcita 21
Programacin en R
Matrices
Las matrices son vectores con un atributo denominado dimension. Este atributo que nos
proporciona la dimensin de la matriz es en s mismo un vector de tipo entero de longitud 2
(numero de filas, numero de columnas).
> dim(m)
[1] 2 3
> attributes(m)
$dim
[1] 2 3
Las matrices se contruyen _"column-wise", esto quiere decir que lo hacen verticalmente, es
decir empezando de la esquina superior izquierda y descendiendo hacia abajo por las
columnas.
Matrices 22
Programacin en R
[1] 1 2 3 4 5 6 7 8 9 10
Las matrices pueden ser creadas rellenando los elementos por columnas ("column-binding")
o por filas ("row-binding") con las funciones cbind() y rbind() respectivamente.
x y
[1,] 1 10
[2,] 2 11
[3,] 3 12
> rbind(x,y)
Matrices 23
Programacin en R
Listas
Las listas son un tipo especial de vector que pueden contener objetos de diferentes clases.
Las listas son una estructura de datos muy importante y ampliamente utilizada, es por eso
que tendramos que estudiarlas y conocerlas profundamente. Las listas junto con un
conjunto de funciones que trataremos ms adelante constituyen una herramienta poderosa
para el desarrollo de nuestro trabajo.
Las listas pueden ser creadas explcitamente con la funcin list(), la cual puede tomar un
nmero arbitrario de argumentos.
[[1]]
[1] 1
[[2]]
[1] "a"
[[3]]
[1] TRUE
[[4]]
[1] 1+4i
Tambin podemos crear una lista vaca con una longitud preestablecida mediante la funcin
vector().
Listas 24
Programacin en R
[[1]]
NULL
[[2]]
NULL
[[3]]
NULL
[[4]]
NULL
[[5]]
NULL
Listas 25
Programacin en R
Factores
Los factores son utilizados para representar categoras y pueden estar ordenadas o
desordenadas. Podemos pensar en los factores como un vector de enteros en el que cada
entero representa una etiqueta. Los factores son importantes en modelos estadsticos y se
utilizan especialmente para modelar junto a funciones como lm() y glm().
El uso de factores con etquetas es mejor que con enteros puesto que los factores sn auto-
descriptivos. Por ejemplo, si trabajamos con una variable que tiene los valores "Hombre" y
"Mujer" es mejor que si lo hacemos con los valores 1 y 2.
> table(x)
x
no yes
2 3
[1] 2 2 1 2 1
attr(,"levels")
[1] "no" "yes"
> attr(x,"levels")
Factores 26
Programacin en R
A menudo los factores sern creados por nosotros cuando importemos un conjunto de datos
con funciones como read.table(). Este tipo de funciones crean factores por defecto cuando
encuentran datos de tipo carcter o cadenas de carcteres ("strings").
El orden de los niveles de un factor puede ser establecido utilizando el argumento levels de
la funcin factor(). Esto puede ser importan en modelos liniales puesto que el primer nivel
es utilizado como nivel base.
Factores 27
Programacin en R
Valores indefinidos
Los valores indefinidos son indicados en R por NA o NaN para cualquier operacin
indefinida matematicamente.
Valores indefinidos 28
Programacin en R
Data frames
Los data frames son utilizados en R para almacenar datos de tipo tabla. Es un tipo de objeto
muy importante en R y utilizados ampliamente en modelado estadstico. El paquete dplyr de
Hadley Wickham posee un conjunto optimizado de funciones diseadas para trabajar
eficientemente con data frames.
Los data frames son representados como un tipo especial de lista donde cada elemento de
la lista tiene que tener la misma longitud. Podemos considerar cada elemento de la lista
como una columna y la longitud de cada elemento de la lista como el nmero de filas.
A diferencia de las matrices, los data frames pueden almacenar diferentes clases de objetos
en cada columna. Recordemos que los matrices deban tener cada elemento de la misma
clase (e.g. todos enteros o todos numericos).
Adems del nombre de las columnas, que nos indica el nombre de las variables, los data
frames tienen un atributo especial denominado row.names que nos indica la informacin de
cada fila en el data frame.
Los data frames normalmente son creados leyendo desde un conjunto de datos con las
funcions read.table() o read.csv(). Sin embargo, data frames pueden ser creados
explcitamente con la funcin data.frame() o pueden ser "coerced" desde otro tipo de
objetos como las listas.
Los data frames pueden ser convertidos a matrices con la funcin data.matrix().
foo bar
1 1 TRUE
2 2 TRUE
3 3 FALSE
4 4 FALSE
> nrow(x)
[1] 4
Data frames 29
Programacin en R
> ncol(x)
[1] 2
Data frames 30
Programacin en R
Nombres
Los objetos en R pueden tener nombres, lo que es til para la escritura de cdigo legible y
objetos auto-descriptivos. A continuacin se muestra un ejemplo de asignacin de nombres
a un vector de enteros.
NULL
> names(x)
Nombres 31
Programacin en R
Formatos binarios
Formatos binarios 40
Programacin en R
Troceado de objetos
Troceado de objetos 45
Programacin en R
Troceado de un vector
Troceado de un vector 46
Programacin en R
Bsqueda parcial
Bsqueda parcial 50
Programacin en R
Eliminacin de valores NA
Eliminacin de valores NA 51
Programacin en R
Operaciones vectorizadas
Operaciones vectorizadas 52
Programacin en R
Fecha y hora
Fecha y hora 54
Programacin en R
Fechas en R
Fechas en R 55
Programacin en R
Horas en R
Horas en R 56
Programacin en R
Data frames
Data frames 59
Programacin en R
El paquete dplyr
El paquete dplyr 60
Programacin en R
select()
select() 61
Programacin en R
filter()
filter() 62
Programacin en R
arrange()
arrange() 63
Programacin en R
rename()
rename() 64
Programacin en R
mutate()
mutate() 65
Programacin en R
group_by()
group_by() 66
Programacin en R
%>%
%>% 67
Programacin en R
Estructuras de control
Estructuras de control 68
Programacin en R
if-else
if-else 69
Programacin en R
repeat
repeat 73
Programacin en R
next, break
next, break 74
Programacin en R
Funciones
Funciones 75
Programacin en R
Funciones en R
Funciones en R 76
Programacin en R
Evaluacin lazy
Evaluacin lazy 79
Programacin en R
El argumento ...
El argumento ... 80
Programacin en R