Introducción a R para Estadística
Introducción a R para Estadística
Grado en Matemáticas
Año 2014-2015
Introducción a R
María de los Ángeles Casares de Cal, Julio González Díaz
Índice
1 Empezando con R 1
1.1 R. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 El “entorno” R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.3 Obtención e instalación de R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3.1 Primera sesión con R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3.2 Instalación de paquetes adicionales de R . . . . . . . . . . . . . . . . . . . 3
1.4 Documentación sobre R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.5 Obteniendo ayuda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.6 Tipos de objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.7 Operaciones básicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.8 Obtención de muestras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.8.1 Muestrear un vector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.8.2 Generación de secuencias . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.8.3 Generación de números aleatorios . . . . . . . . . . . . . . . . . . . . . . 11
1.9 Indexación de vectores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.10 Ordenando vectores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.11 NA, NaN, Inf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.12 Factores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.13 Vectores, matrices, “data frames” . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.14 Listas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.15 Funciones y argumentos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.16 Importando datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.17 Guardando datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.18 Gráficos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2 R Commander 23
3 Ejercicios 25
4 Referencias 28
PLE. Grado en Matemáticas Introducción a R
1 Empezando con R
1.1 R
R es un lenguaje y un entorno de trabajo para el análisis estadístico y gráfico. Forma parte del
Proyecto GNUI y es semejante al lenguaje y entorno de trabajo S, el cual fue desarrollado en los
Laboratorios Bell por John Chambers y otros colaboradores.
R, en la actualidad, es el resultado del esfuerzo conjunto de colaboradores de todo el mundo. R fue
escrito por Robert Gentleman y Ross Ihaka, del Departamento de Estadística de la Universidad de
Auckland. Desde mediados de 1997 hay un equipo principal con acceso al código fuente de R. John
Chambers contribuyó de manera especial en los comienzos de R, incorporándose posteriormente al
equipo principal de desarrollo de R (“Development Core Team”).
R proporciona una amplia variedad de técnicas estadísticas y gráficas, y es fácilmente ampliable.
Una de los puntos fuertes de R es la facilidad con la que se pueden obtener gráficos de alta calidad,
incluyendo en ellos símbolos matemáticos y fórmulas, si fuese necesario.
R está disponible como “Software Libre” en los términos indicados por la Licencia Pública General
del Proyecto GNUII de la fundación “Free Software Foundation”, es decir, puede ser ejecutado,
copiado, modificado y distribuido libremente. Además puede ejecutarse en una amplia y variada
gama de plataformas Unix y sistemas similares (Linux), Windows y MacOS.
1.2 El “entorno” R
Lo que se pretende con el término “entorno” es indicar que R es un sistema coherente y planificado
por entero, en lugar de una acumulación gradual de herramientas muy específicas y poco flexibles,
como suele ser el caso de otros programas informáticos de análisis de datos.
R, como S, está diseñado como un lenguaje de programación real, y permite a los usuarios añadir
funcionalidades adicionales mediante la definición de nuevas funciones. Gran parte del sistema está
escrito en el mismo lenguaje de S. Para tareas computacionalmente intensivas, se puede vincular
código escrito en los lenguajes de programación C, C++ y Fortran, y ser llamado durante la ejecución
de la tarea. Los usuarios avanzados pueden escribir código C para manipular directamente los
objetos de R.
Muchos usuarios opinan que R es un sistema estadístico. Nosotros preferimos pensar en él como
un entorno en el que se implementan técnicas estadísticas. R puede ser ampliado fácilmente
I
Proyecto GNU: [Link]
II
GNU General Public License: [Link]
1
PLE. Grado en Matemáticas Introducción a R
por medio de “paquetes”. Están los paquetes básicos y recomendados que se suministran con la
distribución estándar de R, pero hay muchos más, todos disponibles en los sitios de Internet “CRAN”
(Comprehensive R Archive Network), y que cubren una gran variedad de técnicas de la estadística
moderna.
(Material extraído de la web de R: [Link]
La primera vez que ejecutamos R nos aparecerá una ventana –la consola de R o “R Console”– y
en ella escribiremos las órdenes que queremos que R ejecute, siempre después del símbolo “>” que
nos indica que R espera órdenes para ser ejecutadas.
R tiene una interfaz basada en líneas de comandos. Los comandos tienen una sintaxis, es un
lenguaje como cualquier otro, y eso implica que cuanto más conocimiento y fluidez se tiene del
lenguaje más flexible y comunicativo se puede ser, lo que permite una amplia gama de posibilidades
u opciones. Una interfaz “GUI” (Graphical User Interface) es más fácil de aprender y en una primera
etapa la interacción entre el usuario y el programa informático puede ser mayor, pero, a larga se
puede ser mucho más expresivo con líneas de comandos. La interfaz GUI (a base de menús) de R es
muy básica y sólo válida para ejecutar algunas acciones elementales como abrir, guardar, imprimir
documentos,. . . , instalar y cargar paquetes adicionales, cambiar el directorio de trabajo, . . .
Si ejecutamos un comando que implica dibujar en pantalla una gráfica nos aparecerá otra ventana
(la ventana gráfica), donde siempre estarán los objetos gráficos que hagamos. Se puede abrir
todas las ventanas gráficas que queramos, y el ordenador soporte, con el comando windows() en
el sistema operativo Windows, x11() en Linux, o quartz() para Mac OS, teniendo en cuenta que
R nos dibujará el gráfico en la última ventana “activa” abierta. También podemos usar en cualquier
sistema operativo el comando [Link](). Estos gráficos se pueden guardar en archivo (desde la
GUI). El comando [Link]() cierra, sin guardar, la ventana gráfica que esté “activa” en ese
momento.
R contiene muchas tareas de cálculo ya programadas (sum, min, max, mean, ...). Podemos
usar estas funciones, pero también podemos crear nuestras propias funciones. Estas funciones o
comandos tendrán que ser ejecutados en la R Console.
Ahora bien, podemos trabajar directamente en la Consola, o podemos hacer un documento con
las tareas a realizar en R, e incluso incorporar código de C, código de Unix o de otros lenguajes
de programación. Todo esto se haría en un documento creado con el editor de R o con cualquier
otro editor externo que pueda gestionar el lenguaje de R, por ejemplo, el editor RStudio. Estos
2
PLE. Grado en Matemáticas Introducción a R
documentos se llaman scripts. Al abrir un documento nuevo con el editor de R tendremos otra
ventana. Es ahí donde programaremos nuestras tareas con R y que guardaremos posteriormente.
Otros manuales:
“Introductory statistics with R” de P. Dalgaard, Springer.
“The R Student Companion” de B. Dennis, CRC Press.
“R para principiantes” de E. Paradis, en
[Link]
Desde R podemos consultar la ayuda de todas las funciones contenidas en los paquetes que ten-
gamos instalados y cargados. Hay tres formas de hacerlo:
Si conocemos el nombre de la función que queremos utilizar, pero queremos consultar sus
argumentos u otros detalles:
help(nombredelafuncion), por ejemplo:
3
PLE. Grado en Matemáticas Introducción a R
help([Link])
?nombredelafuncion funciona bien como atajo, excepto en algunos casos en los que ten-
dremos que usar help(), por ejemplo:
help("if")
help("while")
EJEMPLOS
?rnorm
[Link]("rnorm")
?mean
[Link]("mean")
??normal
[Link]("normal")
[Link]()
demo(graphics)
demo(persp)
demo([Link])
Observación 1
Vamos a empezar una sesión de R y lo primero que haremos es cambiar el directorio de trabajo.
De esta manera le indicamos a R donde queremos que lea y nos guarde, por defecto, los archivos
de datos o resultados que usamos en esa sesión.
Lo hacemos desde la “GUI” (menú) o, también , en “R Console” mediante comandos.
Para cambiar el directorio de trabajo:
setwd("/Users/Angeles/Desktop/PracticasConR")
Para saber en qué directorio estamos:
getwd()
Para saber los documentos que hay en el directorio en el que estamos:
dir()
4
PLE. Grado en Matemáticas Introducción a R
y
summary(y)
z <- c("10","20","30","40") #simplemente caracteres
z
summary(z)
w <- c(TRUE,TRUE,FALSE) #valores lógicos
w
summary(w)
Existen diferentes formas de acceder o hacer referencia a los elementos de los vectores.
III
La función summary() nos da información del objeto al que se aplica (x).
IV
R ignora todo lo que aparece en una línea después del símbolo “numeral” (#)
5
PLE. Grado en Matemáticas Introducción a R
Ejemplo
x<-1:10 #forma abreviada de seq(1,10,by=1)
x[4] #el cuarto elemento
x[-4] #todos menos el 4º elemento
x[5:10] #del 5º al 10º
x[-c(5,6)] #todos menos el 5º y el 6º
y<-cos(x)
x[y>0] #los valores de x correspondientes a los valores positivos de y
Ejemplos
x<-5
class(x)
y<-5+5i
[Link](y)
class(y)
factor: un tipo especial de vector, cuando tenemos un vector character (datos “categóricos”).
Se indican las categorías o niveles (levels) del factor.
Ejemplo
y <- c("a","b","a","a","c") #simplemente caracteres
y
levels(y)
yf<-factor(y)
yf
levels(yf)
summary(yf)
class(yf)
bebidas <- factor(c("cerveza","cerveza","agua","vino","agua"))
arrayV : generalización multidimensional de vector. Todas las componentes tienen que ser del
mismo tipo: todos son vectores numéricos, o vectores de caracteres, o vectores lógicos (TRUE,
FALSE), o factores (vectores categóricos).
Ejemplos
“array” creado a partir del vector (a,b), de dimensiones 2x2x3:
a1<-array(c("a","b"),c(2,2,3))
a1
summary(a1)
class(a1)
dim(a1)
V
array: formación, orden, colección, serie
6
PLE. Grado en Matemáticas Introducción a R
a2<-array(rbind(c(4,5,6),c(7,8,9)),c(2,3,3))
a2
summary(a2)
dim(a2)
Ejemplo 2
m1<-matrix(c(11, 11, 22, 33, 33, 55), nrow = 3)
m1
summary(m1)
class(m1)
Ejemplo 3
y<-1:30
y
dim(y)<-c(10,3) #le damos dimensiones
y #observemos que la matriz se llena por columnas
Al pedir byrow=TRUE la matriz se llena por filas. La opción por defecto es por columnas.
x<-1:4
y<-rep(2,4)
x %*% y
x * y
7
PLE. Grado en Matemáticas Introducción a R
[Link] : lo que en otros paquetes estadísticos se llama una “matriz de datos” o un “conjunto
de datos”. Otro nombre es “hoja de datos”, pero debemos aclarar que no es una “hoja de cálculo”
(no permite texto adicional, ni columnas de distinta longitud, ni cálculos en la propia hoja).
Es el objeto más habitual para análisis de datos.
Un “data frame” está formado por variables (vectores numéricos, vectores lógicos, vectores de car-
acteres, factores) –COLUMNAS DE LA MISMA LONGITUD– que están relacionadas “transversalmente”,
de modo que los datos “en la misma posición” –es decir, MISMA FILA– proceden de la misma unidad
experimental: mismo individuo, mismo animal, mismo elemento, . . . ).
Ejemplo
[Link] <- [Link](alumno = c("1","2","3","4","5"),
calif = c(8,4,7.5,NA,6),
nuevo = c(TRUE,TRUE,FALSE,TRUE,FALSE),
proc=c("Lugo","Lugo","Santiago","Vigo","Ferrol"))
[Link]
list: es un “contenedor general” (colección ordenada de objetos). Cada lista está formada a su vez
por objetos (que pueden ser otras listas), y cada objeto puede ser de un tipo distinto. Se crean
con list y podemos acceder a cada una de sus componentes.
Ejemplo
[Link] <- list("vector" = 1:5, "palabra" = "Hola",
"matriz" = matrix(1:15, ncol = 5),
"[Link]" = c(a = 5, b = c("casa", 55)))
[Link]
[Link]$vector
[Link][[1]]
[Link]$[Link]
[Link][[4]]
Observemos que muchas de las funciones incorporadas en R devuelven sus resultados como una
lista.
Operadores aritméticos:
+ #suma
- #resta
* #multiplicación
/ #división
^ o ** #potencia
x%%y #módulo (x mod y)
x%/%y #división entera
Ejemplo:
7 %% 2 #el resto de la división entera
7 %/% 2 #el cociente de la división entera
VI
frame: estructura, marco, armazón, armadura
8
PLE. Grado en Matemáticas Introducción a R
Operadores lógicos:
< #menor que
<= #menor o igual que
> #mayor que
>= #mayor o igual que
== #exactamente igual a
!= #no igual a
!x #NO ‘x’
x|y #‘x’ o ‘y’ (OR)
x&y #‘x’ e ‘y’ (AND)
xor(x,y) #o ‘x’ o ‘y’(OR exclusivo)
Ejemplo
a <- 5 ; a
a < 5 #¿es a menor que 5?
a >= 5 #¿es a mayor o igual que 5?
a != 5 #¿es a distinto de 5?
X<-"hombre " #asignación
X=="hombre" #¿es a idénticamente igual a ‘hombre’?
X!="hombre" #¿es distinto de ‘hombre’?
x<-c(10:20)
x[(x>16)] #los valores de x mayores que 16
x[(x<14)]
x[(x>16) | (x<14)] #los valores de x mayores que 16 o menores que 14
x > 16 #¿son los valores de x mayores que 16?
x < 14
x[(x>14) & (x<16)] #los valores de x mayores que 14 y menores que 16
xor(x>16,x<14) #los valores de x que son "o mayores que 16 o menores que 14"
w<-c(F,F,T)
w
!w
9
PLE. Grado en Matemáticas Introducción a R
Más operaciones:
log(5) #logaritmo natural (neperiano o en base el número e)
log10(5); log(5,10) #logaritmo en base 10
exp(5)
sqrt(25)
sin(10); cos(20); tan(30)
x<-1:10
log(x)
exp(x)
sqrt(x)
#la intersección de los conjuntos {1,2,...,10} y {5,6,...,15}:
intersect(1:10,5:15)
#operaciones aritméticas con vectores numéricos y vectores de valores lógicos:
c(1,2,3) + c(T,F,T)
10
PLE. Grado en Matemáticas Introducción a R
help(RNG)
Una de las gran virtudes de R es la flexibilidad en el acceso a los elementos de vectores, arrays,
data frames, . . . :
x <- -3.5:3.5
x
x[1] #devuelve el primer elemento de x
x[3] #devuelve el tercer elemento de x
x[x>1] #devuelve los elementos de x que son mayores que 1
x>1 #¿los elementos de x son mayores que 1?
x[c(1,3)] #devuelve el primero y el tercer elemento de x
x[-c(1,4)] #devuelve x sin el primero y el cuarto elemento
y <- c(1,3,5,7)
x[y] #devuelve los elementos de x con índice igual a los elementos de y
11
PLE. Grado en Matemáticas Introducción a R
5/0 # infinito
-5/0 #-infinito
0/0 # NaN
x <- c(1, 2, 3, NA, 4)
x
mean(x)
mean(x, [Link]=TRUE) #calcula la media sin los datos faltantes
1.12 Factores
Pero no deberíamos usar el código postal en, por ejemplo, un ANOVA, como si fuera un vector
numérico. El usar códigos (aparentemente) numéricos en análisis estadísticos puede ser una fuente
de errores.
[Link] <- factor([Link]) #mejor
12
PLE. Grado en Matemáticas Introducción a R
Si tenemos un vector con caracteres, y lo queremos usar para un análisis, necesitamos convertirlo
en un factor, sino R avisa (“warning”).
y <- rnorm(20)
x <- rep(letters[1:4], 5)
aov(y ~ x) #con una advertencia
aov(y ~ factor(x)) #funciona bien
Para combinar (juntar, unir) vectores usamos cbind (por columnas) y para combinar matrices
podemos usar cbind (por columnas) o rbind (por filas)
x1 <- 1:4
x2 <- 5:8
m1 <- cbind(x1, x2) # tenemos una matriz
13
PLE. Grado en Matemáticas Introducción a R
“data frames”
x3 <- letters[5:8]
y <- cbind(x1, x2, x3)
y
class(y)
z1 <- [Link](y)
z2 <- [Link](x1,x2,x3)
z1
z2
Ejemplos
Para examinar los nombres de las filas y columnas de un conjunto de datos, por ejemplo, quakesVIII
del paquete datasetsIX , ya incorporado en R:
[Link](quakes)
names(quakes)
Pero, si usamos mucho los datos de un data frame, podemos acceder a ellos directamente usando
el comando attach:
VII
Si los datos son microarrays (micromatrices) estarán los sujetos (o casos) en columnas y las variables (genes)
en filas.
VIII
Mil observaciones –eventos sísmicos en Fiji–, sobre cinco variables: latitud, longitud, profundidad del hipocentro
(km), magnitud (escala de Richter) y número de estaciones sismológicas que informaron del evento.
IX
Todos los paquetes de datos disponibles en R pueden verse escribiendo la expresión:
data(package =.packages([Link]=TRUE))
14
PLE. Grado en Matemáticas Introducción a R
attach([Link])
procede
calificacion
detach([Link]) #para deshacer la acción anterior
En “entornos confusos” (por ejemplo, cuando hay varias variables con el mismo nombre y proceden
de distintos data frame) es mejor evitar attach, y se debe acceder a las variables usando su
localización explícita y completa.
En algunas ocasiones es necesario sustituir ciertos elementos de una matriz de datos por otros
que sean más convenientes. Este procedimiento de sustitución es conocido como “asignación” o
“imputación”.
Ejemplos
A1 <- matrix(c(0,1,3,1,0,NA,3,NA,0,5,4,1),nrow=3)
A1
A2 <- matrix(c(0,1,3,1,0,NA,3,NA,0,5,4,1),nrow=3,byrow=TRUE)
A2
A3 <- matrix(c(0,1,3,1,0,NA,3,NA,0,5,4,1),nrow=3,ncol=6,byrow=TRUE)
A3
which([Link](A1),[Link]=TRUE)
15
PLE. Grado en Matemáticas Introducción a R
A1[[Link](A1)] <- -1
A1
which(A1<0,[Link]=TRUE)
which(A1==0,[Link]=TRUE)
B <- rbind(1:4,5:8,9:6)
B
B[,2] <- 1
B
M <- cbind(A1[,1:2],B[,2])
dim(A1)
dim(B)
C <- A1 %*% t(B)
C * M
b=c(1,3,5)
v=c(2,4,6,8)
outer(b,v,"+") #matriz formada con las sumas de cada par de elementos de b y v
A<-matrix(c(1,2,3,0,2,1,0,0,2),byrow=TRUE,ncol=3)
det(A) #el determinante de la matriz A
solve(A) #la matriz inversa de A, lo comprobamos a continuación:
A%*%solve(A)
tabla<-table([Link]$nuevo,[Link]$procede);tabla
barplot(tabla)
barplot(tabla,legend=T,beside=T,main="Alumno nuevo según su procedencia")
[Link](tabla)
[Link](tabla,1)
[Link](tabla,2)
[Link](tabla) #el cálculo de las proporciones sólo se aplica a tablas
[Link](tabla,1)
[Link](tabla,2)
mosaicplot(tabla)
mosaicplot(tabla,main="AlumnoNuevo-procedencia",
xlab="Alumno nuevo",ylab="Procedencia")
1.14 Listas
Las listas son contenedores generales ordenados. Por tanto muy flexibles.
Muchas funciones devuelven listas, es decir, devuelven un conjunto de resultados de distinta longitud
y distinto tipo.
X
x = M −1 b
16
PLE. Grado en Matemáticas Introducción a R
Una vez que los datos están en R, su manipulación es muy flexible. Podemos seleccionar varia-
bles, datos individuales, subconjuntos de datos, . . . , de acuerdo con criterios que usan, a su vez,
condiciones que pueden implicar a un número arbitrario de variables y casos. Los data frames
y las matrices pueden separarse o juntarse. En el indexado y la selección de casos se pueden
usar números, factores, caracteres, . . . Y se puede escribir el código para que repita las mismas
operaciones con otros datos semejantes (es decir, podemos automatizar el proceso con sencillez).
En R se hacen muchas cosas usando funciones, es decir, comandos con un aspecto similar a
una función matemática, como por ejemplo, log(x) o rep(3,5). Se llaman argumentos a los
elementos que hay entre paréntesis con los que trabaja la función.
Es posible crear nuestras propias funciones.
Ejemplo:
potencia<-function(x,b=2,...){
y<-x^b
plot(x,y,...)
return(y) }
Ahora podemos llamar a la función, el parámetro a es obligatorio, el b no (tiene valor 3 por defecto).
Los puntos suspensivos permiten pasar otros parámetros para la función plot.
potencia(3)
potencia(3,2)
x<-1:20
potencia(x,2)
potencia(x,2,col="red")
Existen funciones genéricas aplicables a distintos objetos que pueden resultar de utilidad.
summary() #resume información del objeto
print() #escribe el objeto
plot() #dibuja el objeto
17
PLE. Grado en Matemáticas Introducción a R
También existen funciones en R que permiten aplicar cualquier otra función o comando a los
elementos de un objeto. Veamos algunos ejemplos.
Para leer un archivo de datos “plain text” (texto “puro”, sin formato), en el que la primera
fila nos da los nombres de las variables y las columnas están separadas por tabuladores:
Si el carácter decimal no es un punto sino, por ejemplo, una coma, usar: dec=","
Si las columnas están separadas por un punto y coma (semicolon): sep=";"
Podemos saltar lineas (skip) o leer un número fijo de líneas (nrows).
Si usamos [Link] ="" se desactivan los comentarios dentro del archivo. Debemos
hacerlo para evitar problemas si tenemos alguna variable de texto libre, es decir, donde pueda
aparecer el símbolo numeral # (por defecto, es: [Link] ="#").
Si usamos quote="" se desactivan las citas dentro del archivo. Debemos hacerlo para evitar
problemas si tenemos alguna variable de texto libre, es decir, donde pueden aparecer apóstro-
fos, comillas, barras invertidas, incluso en el nombre (por defecto, es: quote ="\"’").
Podemos especificar el código para datos faltantes (por defecto es NA, pero también los
espacios en blanco los interpreta como datos faltantes en las variables numéricas y lógicas).
Si hubiese errores de lectura relacionados con distinto número de columnas, entonces estaría
bien usar [Link]() para localizar donde está el problema.
También se puede usar la función scan, para la lectura de datos.
18
PLE. Grado en Matemáticas Introducción a R
También se puede importar datos de las bases de datos (ver R Data Import/Export).
Observación 2
En todos estos casos, es necesario cambiar el directorio de trabajo a la carpeta donde están los
archivos que vamos a leer. Sino, es necesario indicar el sitio donde está el archivo. Por ejemplo:
datos<-[Link]("/Users/angeles/Documentos/DOCENCIA/PLE/[Link]",header=TRUE,sep="\t")
Otra opción es elegir nosotros el archivo sin indicarle de antemano cuál es:
datos<-[Link]([Link](),header=TRUE,sep="\t")
[Link](datos,file="[Link]",sep="\t",[Link]=FALSE,
[Link]=TRUE,quote=FALSE)
library(xlsx)
[Link](misdatos, "[Link]", sheetName="Hoja1",
[Link]=TRUE, [Link]=TRUE, append=FALSE, showNA=TRUE)
Guardando objetos
Podemos conocer la lista de los objetos almacenados en R en nuestra sesión de trabajo (memoria):
ls() u objects().
También podemos borrar todos los objetos almacenados en la memoria: rm(list=ls())
Si queremos guardar estos objetos (variables y funciones) para ser usados en otras sesiones de R.
En la “GUI”: Save Workspace File
O también:
a <- rnorm(10)
b <- 1:10
c <- letters[10:20]
[Link](file="[Link]")
XI
La extensión “.por” corresponde al formato de los archivos “trasladables” –portable– de SPSS o de PSPP.
19
PLE. Grado en Matemáticas Introducción a R
Así guarda en el directorio de trabajo las variables y las funciones definidas por el usuario. Es un
archivo “.RData”, que no es visible.
Al seleccionar el directorio de trabajo, si allí hay un archivo “.RData” ya lo carga automáticamente.
También podemos guardar en un archivo las sentencias ejecutadas (el historial de la sesión) para
poder utilizarlas en otra sesión de R. En la “GUI”: Save History
Con la opción Load History, R cargará la sesión completa, y podremos continuar cualquier sesión
en el mismo punto en que la habíamos dejado.
Observación 3
Todos los datos y archivos los guardará en el directorio de trabajo.
Observación 4
Como ya sabemos, cada vez que abrimos R comenzamos una sesión. En ese momento la única
ventana visible es la Consola. Pero además podemos tener ventanas gráficas (donde R dibujará los
gráficos), y “scripts” (documentos con las tareas o programas en R, colección de líneas de código R
–las funciones o comandos que queremos ejecutar–, y los comentarios que nos sirven de aclaración
o ayuda).
R puede leer y ejecutar estos “scripts”. Si tenemos un archivo que es un “script” de R (documento
con la extensión “.R”), la función:
source("nombredelarchivo", echo=TRUE)
carga el archivo completo (todos los comandos del archivo) y ejecuta los comandos (comprobando
la sintaxis).
El argumento echo=T es útil pues, de este modo, los comandos se “imprimen” en pantalla junto
con la salida.
1.18 Gráficos
R incluye muchas y variadas funciones para hacer gráficos. El sistema permite desde gráficas muy
simples a figuras de calidad para incluir en artículos y libros.
demo(graphics)
20
PLE. Grado en Matemáticas Introducción a R
type: Tipo de gráfica ("p": puntos, "l": líneas, "n": ninguna gráfica, . . . )
pch: Tipos de símbolos para los puntos.
col: Color.
lty: Tipo de línea (1: ininterrumpida, 2: línea discontinua (de trazos), 3: línea discontinua (de
puntos), 0: línea invisible, ...)
lwd: Anchura de la línea.
cex: Aumento de los símbolos y texto de la gráfica.
x<-1:10
y<-x^2
plot(x, y, type = "n", lty=1)
points(x, y, pch = 3, col = "red")
plot(c(0,10),c(0,10),type="n",xlab="",ylab="")
#añadimos, al "plot activo" anterior, lo siguiente:
for(i in 1:10)abline(0, i/5, lty = i, lwd = 2)
Tipos de puntos
plot(c(1,10),c(1,3),type="n",axes =FALSE,xlab="",ylab="")
#añadimos, al "plot activo" anterior, lo siguiente:
points(1:10,rep(1,10),pch= 1:10,cex=2,col="blue")
points(1:10,rep(2,10),pch=11:20,cex=2,col="red")
points(1:10,rep(3,10),pch=21:30,cex=2,col="blue",bg="yellow")
Ejemplo
x<-1:20
y<-sin(pi*x/10)
plot(y)
plot(y,type="l")
plot(y,type="l",col="blue")
plot(y,type="l",col="blue",lwd=5)
Ejemplo
curve(x^3,from=-1,to=1,col="red",ylab="")
Ejemplo
x<-seq(-pi,pi,len=50) #fijamos la longitud en vez del paso
y<-x
f<-outer(x,y,function(x,y) cos(y)/(1+x^2))
contour(x,y,f)
contour(x,y,f,nlevels=15,add=TRUE)
[Link](x,y,f)
Observación 5
El comando par() controla muchos de estos parámetros gráficos: help(par)
Para ver los colores en R: palette(), colors()
21
PLE. Grado en Matemáticas Introducción a R
Podemos obtener la posición de los “n” puntos que señalemos en la ventana gráfica activa con la
función locator(), y para finalizar el uso de esta función, antes de llegar al total de “n", pulsar
Esc.
plot(x, y)
locator(n=5)
Gráfico múltiple
Podemos mostrar varios gráficos en la misma ventana gráfica.
Una forma de hacerlo es con: par(mfrow=c(nfilas, ncolumnas))
Ejemplo:
#abrimos una ventana gráfica con 2x2=4 compartimentos:
graficomultiple<-par(mfrow=c(2,2))
plot(rnorm(10))
plot(runif(10), rnorm(10))
plot(runif(10),runif(10))
plot(runif(10))
#cerramos la ventana gráfica de 4 compartimentos:
par(graficomultiple)
plot(runif(10))
Ejemplo
La función pairs() se aplica a matrices y obtenemos un diagrama de dispersión múltiple:
library(graphics)
pairs(quakes, main = "Fiji Earthquakes, N = 1000", [Link] = 1.2, pch = ".")
22
PLE. Grado en Matemáticas Introducción a R
2 R Commander
La interfaz por defecto de R Commander consiste (de arriba a abajo) en: una barra de menús,
una barra de herramientas, una ventana de instrucciones, una ventana de salida y una ventana
de mensajes (visualiza los mensajes de error, los avisos y alguna información más).
Cuando creamos gráficos, éstos aparecerán en una ventana aparte (Graphics Device).
Las instrucciones para leer, escribir, transformar y analizar datos se ejecutan usando la barra
de menú de la parte superior de la ventana de R Commander. La mayor parte de los items de
este menú le guiarán mediante ventanas de diálogo, preguntando más allá de la especificación.
Es aconsejable explorar el menú para ver las opciones disponibles.
Bajo la barra de menú se encuentra la barra de herramientas con un campo de información que
muestra el nombre del conjunto de datos “activo” (en uso), botones para editar y mostrar
el conjunto de datos activo, y un campo de información mostrando el modelo estadístico
“activo”.
Bajo la ventana de instrucciones hay un botón Ejecutar para realizar las órdenes indicadas en
la ventana de instrucciones. Los campos de información para los datos y el modelo activo
son botones que pueden usarse para seleccionar éstos entre, respectivamente, conjuntos de
datos o modelos disponibles en memoria.
La mayor parte de las órdenes requiere un conjunto de datos activo. Cuando se ejecuta R
Commander no hay conjunto de datos activo, como está indicado en el campo de información
del conjunto de datos activo. Un conjunto de datos “se convierte” en un conjunto de datos
activo cuando éste es leído en la memoria desde un paquete de R o importado desde un
archivo de texto, conjunto de datos SPSS, datos STATA, datos Excel, etc. También, el
conjunto de datos activo puede seleccionarse desde los conjuntos de datos residentes en la
memoria en el momento actual.
Por defecto, las órdenes son registradas en la ventana de instrucciones (la ventana de texto
vacía inmediatamente después de la barra de herramientas); las órdenes y las salidas aparecen
en la ventana de resultados (la ventana de texto vacía después de la ventana de instrucciones)
y el conjunto de datos activo se adjunta a la ruta de búsqueda.
23
PLE. Grado en Matemáticas Introducción a R
Si el registro de instrucciones está activo, las órdenes de R generadas desde los menús y
los cuadros de diálogos, se introducen en la ventana de instrucciones de R Commander. Se
pueden editar estas órdenes de manera normal y se pueden escribir otras nuevas en la ventana
de instrucciones. Las órdenes individuales pueden escribirse en más de una línea, pero cada
línea, después de la primera, debe “sangrarse” con uno o más espacios o tabuladores. El
contenido de la ventana de instrucciones se puede guardar durante o al final de la sesión. El
contenido de la ventana de resultados se puede editar o guardar en un archivo de texto.
Para volver a ejecutar una orden o un conjunto de ellas, se seleccionan las líneas que se
desean ejecutar usando el ratón y se presiona el botón Ejecutar, situado a la derecha de la
barra de herramientas (o ctrl-R, para ejecutarlos). Si no hay texto seleccionado, el botón
Ejecutar (o ctrl-R) envía el contenido de la línea que contiene el cursor de inserción. Hay que
hacer notar que se generará un error si la orden o las órdenes enviadas son incompletas.
Si queremos hacer una búsqueda (accesible en Editar → Buscar) se abrirá un cuadro de
diálogo de búsqueda de texto en la ventana de instrucciones o la ventana de resultados. Las
búsquedas se realizan en la ventana de instrucciones, salvo que antes se pulse en la ventana
de resultados para activarla (pulsando ctrl-F). Presionando ctrl-S se guardará el conjunto
de instrucciones o la ventana de resultados. Presionando ctrl-A se selecciona todo el texto
del conjunto de instrucciones o de la ventana de resultados. Pulsando el botón derecho del
ratón en el conjunto de instrucciones o en la ventana de resultados se abre el menú con los
ítems del menú Editar, más un ítem Ejecutar (en la ventana de instrucciones). Cuando se
ejecuten órdenes en la ventana de R Commander, hay que asegurarse de que la sentencia sea
lógica. Por ejemplo, no tiene sentido ajustar un modelo estadístico a un conjunto de datos
que todavía no está en memoria.
Si se cierra R Commander, sin cerrar R, para volver a cargarlo se debe ejecutar la instrucción
Commander()
24
PLE. Grado en Matemáticas Introducción a R
3 Ejercicios
1. Supongamos que estamos haciendo un estudio del consumo de nuestro vehículo. En las seis
últimas veces que llenamos el depósito apuntamos el kilometraje del vehículo y los datos
fueron:
65311 65624 65908 66219 66499 66821 67145 67447
Aplica la función diff a los datos. ¿Qué obtienes?
3. Consideremos el factor:
bebidas<- factor(c("cerveza","cerveza","agua","vino","agua")).
Calcula la proporción de cerveza en el factor bebidas.
5. Examina el “data frame” ChickWeight, conjunto de datos del paquete datasets, ya incor-
porado en R. Tiene 578 filas y 4 columnas y son datos procedentes de un estudio sobre la
dieta en el crecimiento de pollitos.
(a) Haz un diagrama de dispersión del peso frente al tiempo, de los datos del pollito número
5 (usa la función subset()). Añade un título a los ejes de la gráfica.
(b) Incorpora a la gráfica anterior el diagrama de dispersión del peso frente al tiempo, de
los datos del pollito número 33.
25
PLE. Grado en Matemáticas Introducción a R
(c) Añade un título y una "leyenda" a la gráfica ("leyenda" para identificar los datos de los
dos pollitos).
(d) Haz en una sola gráfica los diagramas de cajas del peso con respecto a la dieta. Añade
un título a la gráfica y a sus ejes.
9. Dada la matriz B:
1 NA 3
B= 5 5 NA
6 9 4
Sustituye los datos faltantes por el máximo de los valores de B.
26
PLE. Grado en Matemáticas Introducción a R
14. Dibuja en una misma gráfica las funciones x 2 y x 4 en el intervalo [−1, 1]. Añade título a la
gráfica, e incorpora también una leyenda para identificar las dos funciones.
15. En la sesión de R que has abierto para hacer los ejercicios, indica cuáles son los objetos de
tu área de trabajo.
27
PLE. Grado en Matemáticas Introducción a R
4 Referencias
28