0% encontró este documento útil (0 votos)
15 vistas29 páginas

Introducción a R para Estadística

Este documento presenta una introducción al lenguaje y entorno de programación R. Explica cómo obtener e instalar R, los diferentes tipos de objetos que puede manejar R como vectores, matrices y datos, y cómo realizar operaciones básicas, importar y exportar datos, y crear gráficos. También cubre temas como obtener ayuda, funciones, factores y listas. El objetivo es proporcionar una guía básica para empezar a usar R para análisis estadístico y visualización de datos.

Cargado por

Enrique Profesor
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
15 vistas29 páginas

Introducción a R para Estadística

Este documento presenta una introducción al lenguaje y entorno de programación R. Explica cómo obtener e instalar R, los diferentes tipos de objetos que puede manejar R como vectores, matrices y datos, y cómo realizar operaciones básicas, importar y exportar datos, y crear gráficos. También cubre temas como obtener ayuda, funciones, factores y listas. El objetivo es proporcionar una guía básica para empezar a usar R para análisis estadístico y visualización de datos.

Cargado por

Enrique Profesor
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Programación lineal y entera

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

R es un conjunto integrado de funciones para el manejo de datos, cálculos y representaciones


gráficas. Incluye:

 un manejo y almacenamiento eficaz de los datos,

 gran variedad de funciones para cálculos sobre matrices,

 una amplia colección de herramientas básicas y avanzadas para el análisis de datos,

 numerosos recursos gráficos para el análisis y visualización de datos, y

 un lenguaje de programación bien desarrollado, simple y efectivo que incluye condicionantes,


bucles, funciones definidas por el usuario.

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]

1.3 Obtención e instalación de R

Depende del sistema operativo. La información necesaria podemos encontrarla en [Link]


[Link]
R consta de un “sistema base” y de paquetes adicionales que extienden su funcionalidad. Hay
distintos "tipos" de paquetes:
Los que forman parte del sistema base (base, grDevices, datasets, graphics, methods,
stats, utils). Podemos verlos con el comando getOption("defaultPackages").
Los que no son parte del sistema base, pero son recomendados (boot, cluster, foreign,
lattice, MASS, nlme, survival, ...). Todos estos están en la distribución estándar de R.
Y otros paquetes que será necesario instalar (linprog, lpsolveAPI, xlsx, Rcmdr, . . . ).

1.3.1 Primera sesión con R

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.

1.3.2 Instalación de paquetes adicionales de R

Desde la “GUI” (en el menú de la barra superior de la ventana de la consola de R) o desde “R


Console” (con el comando [Link]()).
Por ejemplo, para instalar un paquete cuyo nombre ya conocemos:
[Link]("linprog", dependencies=TRUE)
Una vez instalados, para usarlos hay que cargarlos en cada sesión de R que abrimos.
Lo haremos desde la “GUI” o desde “R Console” (con la función library(nombredelpaquete)).

1.4 Documentación sobre R

Los manuales de R, incluidos en todas las instalaciones, son:


An Introduction to R: RShowDoc("R-intro") (está traducido al español, de lectura requerida)
Writing R Extensions: RShowDoc("R-exts")
R Data Import/Export: RShowDoc("R-data")
R Language Definition: RShowDoc("R-lang")
R Installation and Admnistration: RShowDoc("R-admin")
También podemos acceder al archivo de preguntas más frecuentes:
R FAQ: RShowDoc("R-FAQ")

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]

Encontraremos toda la documentación en [Link]

1.5 Obteniendo ayuda

En [Link] podemos hacer las búsquedas sobre la docu-


mentación (incluyendo los paquetes de R).
También 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")

 Si no conocemos el nombre de la función que queremos utilizar pero sabemos el nombre de


la técnica (por ejemplo: Kruskal-Wallis):
[Link]("loquequeremosbuscar"), por ejemplo Kruskal-Wallis:
[Link]("kruskal")
Esto abrirá una ventana donde estarán los paquetes y funciones que tenemos en nuestra
instalación de R relacionados con este tema, y podemos acceder a la ayuda que R nos
ofrece.

 Si queremos información general:


[Link]()
Esto abrirá nuestro navegador y nos permitirá movernos por todos los paquetes y funciones
de los que disponemos. Además, desde la misma ventana, podremos acceder a distintos
manuales oficiales.
Una sugerencia es minimizar esta ventana de ayuda, para usarla cuando sea necesario, y
continuar la sesión.

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

1.6 Tipos de objetos

Prácticamente todo en R es un “objeto”. Por ejemplo:


Los elementos básicos que pueden ser: numeric, integer, character, factor, logical,
...
Los “contenedores”: vector, matrix, array, data frame, list.
Las funciones de R, tanto propias (mean, lm, ...) como creadas por el usuario (por ejemplo, la
función potencia, ... que definiremos más adelante).

Nombres de los objetos. Asignación.


Los nombres válidos para un objeto son combinaciones de letras, números, y el punto (“.”)
Los nombres no pueden empezar con un número.
R distingue mayúsculas y minúsculas (“case-sensitive”): x “es distinto de” X
En R hay nombres reservados para distintas tareas (c, factor, function, if, table, ...).
Mejor evitarlos.
Las asignaciones podemos hacerlas con: <-, =, ->
Veamos algunos tipos de objetos que usaremos frecuentemente:

vector: colección ordenada (“indexada”) de elementos del mismo tipo.


Ejemplos
x <- c(1,2,3) # valores numéricos
x #print(x)
summary(x)III

y <- c("a","b","a","a","c") #simplemente caracteresIV

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)

En R los vectores se pueden crear de diferentes formas.


Ejemplo
x<-c(3.0,1.5,-2,1) #por combinación
x<-rep(3,5) #por repetición
x<-seq(0,1,by=0.1) #como secuencia, por ejemplo de 0 a 1, con paso 0’1
x<-seq(-pi,pi,len=50) #fijamos la longitud en vez del paso
x<-seq(-3,3,length=15)>0 #creando un vector de valores lógicos

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

TIPOS DE VECTORES: logical, integer, numeric, complex, character


Los vectores se definen al ser asignados (<-, =, ->).
Es posible comprobar el tipo asignado con las funciones:
class(...), [Link](...), [Link](...), [Link](...), [Link](...), str(...), ...

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

“array” de dimensiones 2x3x3, creado a partir de los vectores (4,5,6) y (7,8,9):

a2<-array(rbind(c(4,5,6),c(7,8,9)),c(2,3,3))
a2
summary(a2)
dim(a2)

matrix: una matriz es un “array” bidimensional.


Ejemplo 1
x1<-c(20,30,40,50)
x2<-c(60,65,70,75)
matriz1<-rbind(x1,x2)
matriz1
matriz2<-cbind(x1,x2)
matriz2
rownames(matriz2)<-c("pablo","luis","juan","pedro")
colnames(matriz2)<-c("edad","peso")
matriz2

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

Utilizando la función matrix tenemos más posibilidades.


Ejemplo 4
miMATRIZ <- matrix(x, nrow = 2, ncol=3, byrow=TRUE,
dimnames=list(c("F1","F2"),c("C1","C2","C3")))
miMATRIZ

Al pedir byrow=TRUE la matriz se llena por filas. La opción por defecto es por columnas.

El operador %*% multiplica matrices:

x<-1:4
y<-rep(2,4)
x %*% y
x * y

help(matrix) #vemos todas las opciones

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.

1.7 Operaciones básicas

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

Trabajando con vectores numéricos:


x <- c(1,1,3,4,5) ; x
y <- x/2 ; y
z <- x^2 ; z
w <- y + z ; w
y*z
-x #devuelve el vector opuesto de x
sum(x) #devuelve la suma de los elementos de x
prod(x) #devuelve el producto de los elementos de x
max(x) #devuelve el elemento máximo de x
min(x) #devuelve el elemento mínimo de x
[Link](x) #devuelve el lugar que ocupa (subíndice) el máximo de x
[Link](x) #devuelve el lugar que ocupa el mínimo de x
range(x) #recorrido o rango de x o (mín(x),máx(x))
length(x) #número de elementos de x
mean(x) #devuelve la media de x
median(x) #devuelve la mediana de x

9
PLE. Grado en Matemáticas Introducción a R

quantile(x,probs=c(0.25,0.75)) #devuelve los cuartiles


var(x) #devuelve la cuasivarianza de x
sd(x) #devuelve la cuasidesviación típica de x
cumsum(x) #devuelve un vector con las sumas "acumuladas" de los elementos de x
cumprod(x) #devuelve un vector con los productos "acumulados" de los elementos de x

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)

1.8 Obtención de muestras

1.8.1 Muestrear un vector

Extracción sin reemplazamiento:


sample(5) #una permutación de 1,2,3,4,5
x <- c(1,2,3,4,5,6)
sample(x,3) #extracción sin reemplazamiento de 3 elementos de x
sample(x,3) #una muestra diferente de la anterior

#si queremos "reproducir" la misma muestra, hay que establecer la "semilla":


[Link](12345)
sample(x,4)
[Link](12345)
sample(x,4)

Extracción con reemplazamiento:


sample(5,replace=TRUE)
sample(x,4,replace=TRUE) #extracción con reemplazamiento de 4 elementos de x
sample(x,4,replace=TRUE) #una muestra diferente de la anterior

#si queremos "reproducir" la misma muestra, hay que establecer la ‘semilla":


[Link](12345)
sample(x,4,replace=TRUE)
[Link](12345)
sample(x,4,replace=TRUE)

10
PLE. Grado en Matemáticas Introducción a R

1.8.2 Generación de secuencias


x <- seq(from=2, to=12, by=2) #del 2 al 12, con paso 2
x
y <- seq(from=2, to=12, length=10) #sólo 10 datos
y
z <- 1:10 #forma abreviada de seq(1,10,by=1)
z
u <- -5:3
u
w <- c(1:5, 7:10, seq(from=-7, to=5, by=2))
w
xx <- 1:3
xx
yy<-rep(2,3) #por repetición
yy
rep(xx, length=8)
zz<-2:4
rep(xx, zz)
gl(2, 4) #factor de 2 niveles (nivel 1, nivel 2), con 4 replicaciones de cada nivel
gl(4, 1, length=12)
gl(3, 4, label=c("Linux", "iOS", "MacOSX"))

1.8.3 Generación de números aleatorios


rnorm(10)
rnorm(10, mean = 20, sd = 4)
runif(15)
runif(15, min = 10, max = 30)

help(RNG)

1.9 Indexación de vectores

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

names(x) <- c("aa","bb","cc","dd","ee","ff","gg","nulo")


x[c("bb","nulo")] #devuelve los elementos de x con los nombres "bb" y "nulo"

1.10 Ordenando vectores

x <- c(0.3, 12, 0.2, 19, 0.5) ; x


sort(x) #los datos de x ordenados de menor a mayor
sort(x,decreasing=TRUE)
rank(x) #el subíndice que le corresponde a cada elemento original de x,
si ordenamos los elementos de x de menor a mayor

1.11 NA, NaN, Inf

“NA” es el código de “not available” (datos faltantes)

v <- c(1:3, NA)


v
[Link](v) #nos responde a la pregunta qué elementos de v son NA
which([Link](v)) #nos indica el subíndice del elemento que es NA
v[[Link](v)] <- 0 #Sustituye el elemento que es NA por un cero
v

“Inf” (“infinite”) y “NaN” (“not a number”) son distintos de NA

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

También tenemos: [Link] o [Link]


DF <- [Link](x = c(1, 2, 3), y = c(0, 10, NA))
DF
[Link](DF)

1.12 Factores

[Link] <- c(28430, 28016, 28034)


class([Link])

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

Convertir un factor en vector numérico (antes hay que “convertirlo” a carácter):


x <- factor(c(34,34,15,26,15,15,15,26,26,34,34,34))
x
y<-[Link](x) #no funciona como esperamos
y<-[Link]([Link](x))
y

Podemos fijar el orden de las etiquetas:


[Link] <- factor(c("alto","bajo","medio"))
[Link] <- factor(c("alto","bajo","medio"),levels=c("bajo","medio","alto"))

Para “discretizar” datos


x <- 1:20
x
summary(x)
x.dis1 <- cut(x, 5) #crea un factor de 5 niveles (los intervalos)
x.dis1
class(x.dis1)
summary(x.dis1)
x.dis2<-cut(x,breaks=0:20) #con cortes en 1,2,3,...,20
x.dis2
summary(x.dis2)
#y ahora con cortes de amplitud 5, empezando en 0 y terminando en 20:
x.dis3<-cut(x,breaks=seq(0,20,5))
x.dis3
summary(x.dis3)

1.13 Vectores, matrices, “data frames”

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

m2 <- cbind(m1, m1)


m3 <- rbind(m1, m1)
m2
m3
class(m2)
class(m3)

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

Recordemos que la estructura de los “data frames” es:


“SUJETOS (CASOS)” en fila,
“VARIABLES” en columna,
que es la organización de los datos usada habitualmente en Estadí[Link]
Como ya hemos visto, podemos convertir una matriz en un “data frame”:
m1
class(m1)
[Link](m1)
[Link]<-[Link](m1)
[Link]
class([Link])

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)

Accediendo a los datos de un “data frame”


Si tenemos un “data frame”:
[Link] <- [Link](alumno = c("1","2","3","4","5","6","7","8","9"),
calificacion= c(8,4,7.5,NA,6,7,8.5,9,5),
nuevo= c(TRUE,TRUE,FALSE,FALSE,TRUE,FALSE,TRUE,TRUE,FALSE),
procede=c("Lugo","Lugo","Santiago","Vigo","Ferrol","Lugo","Lugo","Vigo","Vigo"),
edad=c(19,18,21,20,35,23,20,22,21))

Para acceder a sus columnas:


[Link]$procede
[Link]$calificacion

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.

Extrayendo subconjuntos de un data frame, usando la función subset:


x <- matrix(rnorm(30, 1), ncol = 5)
y <- c(1, seq(5))
#combinando $x$ e $y$ en una nueva matriz
x <- cbind(x, y)
#convirtiendo $x$ en un data frame llamado [Link]
[Link] <- [Link](x)
[Link]
#Eligiendo algunas "filas"
[Link] <- subset([Link], y > 2)
[Link]
x.sub1 <- subset([Link], y > 2 & V1 > 0.6)
x.sub1
x.sub2 <- subset([Link], y > 3, select = V2:V5)
x.sub2
#Eligiendo algunas "filas" y "columnas"
x.sub3 <- subset([Link], y > 2 & V2 > 0.4, select = c(V1, V4))
x.sub3

Trabajando con matrices


matriz <- matrix(rnorm(30), nrow = 5)
matriz
dim(matriz)
colnames(matriz) <- paste("v", 1:6, sep="")
rownames(matriz) <- paste("id",1:5, sep=".")
matriz
dimnames(matriz)
matriz[, c("v1", "v3")]

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

diag(5) #la matriz diagonal 5x5

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)

solve(M,b) #devuelve el vector x de la ecuación Mx=bX


Trabajando con la función “table” para resumir la información de datos categóricos

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

[Link] #ya definida en un ejemplo anterior


names([Link])
length([Link])
[Link][3]
[Link][[3]]

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).

1.15 Funciones y argumentos

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")

Así, el formato que se utiliza para definir funciones en R es:


NOMBRE<-function(arg1=val,arg2=val,...){expresión}
Es opcional incluir los valores para los argumentos en la definición, pero cualquier argumento que
no tenga valor será obligatorio.
La función devuelve el último objeto evaluado, o lo que indiquemos en la sentencia return.
Cualquier cambio en la función se perderá sino se devuelve al salir. Si queremos un cambio perma-
nente usaremos <<-.
Los puntos suspensivos ... sirven para pasar argumentos a las funciones, de forma libre.

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.

#la función apply


mat1 <- matrix(c(1:4, 1, 6:8), nrow=2)
mat1 #print(mat1)
apply(mat1, 1, sum) #aplica la función suma a las filas de la matriz
apply(mat1, 2, sum) #aplica la función suma a las columnas de la matriz

mat2 <- cbind(x1 = 4, x2 = c(4:1, 2:5))


rownames(mat2)<- letters[1:8]
mat2
[Link] <- apply(mat2, 2, sum)
[Link]
[Link] <- apply(mat2, 1, sum)
[Link]

1.16 Importando datos

 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:

[Link] <- [Link]("[Link]", header=TRUE, sep="\t")

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.

 Importando datos de hojas de cálculo “Excel”


Usaremos el paquete de R ‘xlsx’:
[Link]("xlsx",dependencies=TRUE)
require(xlsx) #library(xlsx)
nuevosdatos<[Link]("[Link]", sheetName="Hoja1",header=TRUE)

18
PLE. Grado en Matemáticas Introducción a R

 Hay funciones para importar datos de SAS, Stata, SPSS , . . .

library(foreign) #cargamos el paquete ‘foreign’


datos <- [Link]("[Link]",[Link]=TRUE)XI
datos
summary(datos)
names(datos)
class(datos)

 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")

1.17 Guardando datos

Utilizamos la función [Link]()


help([Link]) #para ver todas sus opciones

[Link](datos,file="[Link]",sep="\t",[Link]=FALSE,
[Link]=TRUE,quote=FALSE)

Podremos también guardar datos en una hoja de cálculo “Excel”:

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)

plot() función gráfica básica


x <- runif(50, 0, 4)
y <- runif(50, 0, 4)
plot(x, y, main = "título principal", sub = "subtítulo",
xlab = "etiqueta del eje X", ylab = "etiqueta del eje Y",
xlim = c(-1, 5), ylim = c(-1, 5))

Añadimos a la gráfica anterior (en la ventana gráfica activa o en uso) lo siguiente:


abline(h = 0, lty = 1)
abline(v = 0, lty = 2)
text(1, 5, "algo de texto")
mtext("texto en horizontal", side = 1, line=-2)
mtext("text en vertical", side = 2, line = -3, cex=2)

plot: type, pch, col, lty, lwd, cex

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)

help(plot) #vemos todas las opciones de plot

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

Identificación interactiva de datos


Podemos obtener el nombre de los puntos que señalemos en la ventana gráfica activa con la función
identify(), y para finalizar el uso de esta función pulsar Esc.
x <- 1:10
y <- sample(1:10)
nombres <- paste(x,",",y, sep="")
plot(x, y)
identify(x, y, labels=nombres)

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 = ".")

Haciendo gráficas directamente en archivo


En un archivo “PDF” (también hay otros formatos: PNG, JPEG, TIFF, . . . ):
pdf(file = "[Link]", width = 8, height = 10)
plot(rnorm(10))
[Link]()

?Devices #(lista de recursos gráficos)

22
PLE. Grado en Matemáticas Introducción a R

2 R Commander

R Commander es una “interfaz gráfica de usuario” (GUI) para R.


Para comenzar con R Commander, empezamos una sesión en R y cargamos el paquete “Rcmdr”,
previamente instalado.
[Link]("Rcmdr", dependencies=TRUE)
library(Rcmdr)
Una vez cargado el paquete, tendremos dos ventanas: la ventana “R Console” y la ventana de “R
Commander”.

Empezando con 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.

 Algunos diálogos de Rcmdr (en Estadísticos → Ajuste de modelos) generan un modelo.


Cuando “se ajusta un modelo”, se convierte en el modelo activo, indicado en el campo de
información de la barra de herramientas de R Commander. Los items del menú Modelos
se aplican al modelo activo. Inicialmente, no hay modelo activo. Si hay varios modelos en
memoria, el modelo activo se puede elegir entre los que están en memoria.

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?

2. Consideremos los vectores:


x=(1,3,5,7)
y=(2,3,5,NA,11,13,17,23)
Averigua los resultados de los siguientes comandos de R, sin ejecutarlos:
1. x+1
2. y*2
3. length(x) ; length(y)
4. x + y
5. x<6
6. x[x<6]
7. x>5 | x<3
8. y[3]
9. y[-3]
10. y[x]
11. y[3:6]
12. y[[Link](y)]<-99
13. y[y<=7]
14. y>3 & y<13
15. y[y>3 & y<13]
16. y[xor(y>13,y<5)]
17. x[c(2,4)]
18. x[-c(2,4)]

3. Consideremos el factor:
bebidas<- factor(c("cerveza","cerveza","agua","vino","agua")).
Calcula la proporción de cerveza en el factor bebidas.

4. La función [Link]() mide el tiempo de las operaciones de R. Examina la ayuda (help)


de esta función. Si A es una matriz de doses, de dimensión 2 × 106 , y b es un vector de
unos, de longitud 106 , calcula A · b y A2 . ¿Cuál es el cálculo más rápido?

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.

6. Utilizando los comandos y funcionalidades de R, crea los siguientes vectores:


i. (1,2,3,...,18,19,20)
ii. (20,19,18,...,3,2,1)
iii. (6,6,6,6,6,6,6,6)
iv. (5,7,5,7,5,7,5,7)
v. (5,5,5,5,7,7,7,7)
vi. (4,6,3), asignándole el nombre vec. A continuación, crea el vector: (4,6,3,4,6,3,...,4,6,3),
donde vec aparece repetido 10 veces.

7. Calcula e x · cos(x) para los valores x = 3, 30 1, 30 2, . . . , 30 9, 4

8. Comprueba que A3 = 0 siendo:


 
1 1 3
A= 5 2 6 
−2 −1 −3
Reemplaza la tercera columna de A por la suma de las dos primeras columnas.

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.

10. Dado el vector x = (1, 2, 3, 4, 5), da dos formas de calcular su módulo.

11. Dada la siguiente matriz M con 10 filas:


 
10 −10 10
 10 −10 10 
M=  ...

... ... 
10 −10 10M
Calcula la matriz 3 × 3 M T M.

12. Resuelve el sistema de ecuaciones:


3x + 2y + 5z = 22
−x + 5y + 2z = 19
2x + 4y + z = 15
Comprueba la solución dada.

13. Calcula la matriz inversa de D, donde D es:


 
1 2 3
D= 2 2 1 
−2 −1 −1
Comprueba que, en efecto, la matriz obtenida es la inversa de D.

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

Libros sobre R de miembros del “R Core Team”:


John M. Chambers (2008), “Software for Data Analysis: Programming with R”. Springer, New
York, ISBN 978-0-387-75935-7, [Link]
Peter Dalgaard (2008), “Introductory Statistics with R”, 2nd edition. Springer, ISBN 978-0-387-
79053-4, [Link]
Robert Gentleman (2008), “R Programming for Bioinformatics”. Chapman & Hall/CRC, Boca
Raton, FL, ISBN 978-1-420-06367-7, [Link]
Stefano M. Iacus (2008), “Simulation and Inference for Stochastic Differential Equations: With R
Examples”. Springer, New York, ISBN 978-0-387-75838-1.
Deepayan Sarkar (2007), “Lattice: Multivariate Data Visualization with R”. Springer, New York,
ISBN 978-0-387-75968-5.
W. John Braun and Duncan J. Murdoch (2007), “A First Course in Statistical Programming with
R”. Cambridge University Press, Cambridge, ISBN 978-0521872652.
P. Murrell (2005), “R Graphics”, Chapman & Hall/CRC, ISBN: 1-584-88486-X, [Link]
[Link]/~paul/RGraphics/[Link]
William N. Venables and Brian D. Ripley (2002), “Modern Applied Statistics with S” (4th edition).
Springer, ISBN 0-387-95457-0, [Link]
Jose C. Pinheiro and Douglas M. Bates (2000), “Mixed-Effects Models in S and S-Plus”. Springer,
ISBN 0-387-98957-0.
Ihaka & Gentleman (1996), “R: A Language for Data Analysis and Graphics”, Journal of Compu-
tational and Graphical Statistics, 5, 299–314.
Otros manuales:
[Link]
[Link]

28

También podría gustarte