Curso de Iniciación a R

102 

Texto completo

(1)

Curso de Iniciación a

R

Ibon Martínez

(2)

Proyecto R - ¿Qué es R?

R es un lenguaje de programación para entorno estadístico y gráficos. La base del proyecto se encuentra en la siguiente dirección:

http://www.r-project.org/

En esta dirección podremos descargar la última versión del programa así como acceder a toda la documentación, paquetes y librerías anexas, foros y otros proyectos relacionados.

(3)

Proyecto R - ¿Qué es R?

Se trata de un proyecto de software libre, resultado de la implementación GNU del premiado lenguaje S. R y S-Plus -versión comercial de S- son,

probablemente, los dos lenguajes más utilizados en investigación por la comunidad estadística, siendo además muy populares en el campo de la

investigación biomédica, la bioinformática y las matemáticas financieras. R se distribuye bajo la licencia GNU GPL y está disponible para los sistemas

(4)

Proyecto R - CRAN

El mantenimiento del Proyecto R se realiza a traves del CRAN The

Comprehensive R Archive Network donde se encuentran las últimas versiones

del programa R y los paquetes anexos. El Mirrora en España es http://cran.es.r-project.org/.

a

es un sitio Web que contiene una r´eplica exacta de otro. Estas r´eplicas u espejos

se suelen crear para facilitar grandes descargas y facilitar el acceso a la informaci´on aun

(5)

Proyecto R - Propiedades

• La capacidad de combinar, sin fisuras, análisis “preempaquetados” con análisis ad-hoc, específicos para una situación: capacidad de manipular y modificar datos y funciones.

(6)

Proyecto R - Propiedades

• La capacidad de combinar, sin fisuras, análisis “preempaquetados” con análisis ad-hoc, específicos para una situación: capacidad de manipular y modificar datos y funciones.

• Los gráficos de alta calidad: visualización de datos y producción de gráficos para artículos.

(7)

Proyecto R - Propiedades

• La capacidad de combinar, sin fisuras, análisis “preempaquetados” con análisis ad-hoc, específicos para una situación: capacidad de manipular y modificar datos y funciones.

• Los gráficos de alta calidad: visualización de datos y producción de gráficos para artículos.

• La comunidad de R es muy dinámica, con gran crecimiento del número de paquetes, e integrada por estadísticos de gran renombre (ej., J.

(8)

Proyecto R - Propiedades

• La capacidad de combinar, sin fisuras, análisis “preempaquetados” con análisis ad-hoc, específicos para una situación: capacidad de manipular y modificar datos y funciones.

• Los gráficos de alta calidad: visualización de datos y producción de gráficos para artículos.

• La comunidad de R es muy dinámica, con gran crecimiento del número de paquetes, e integrada por estadísticos de gran renombre (ej., J.

Chambers, L. Terney, B. Ripley, D. Bates, . . . ).

• Hay extensiones específicas a nuevas áreas como bioinformática, geoestadística y modelos gráficos.

(9)

Proyecto R - Propiedades

• La capacidad de combinar, sin fisuras, análisis “preempaquetados” con análisis ad-hoc, específicos para una situación: capacidad de manipular y modificar datos y funciones.

• Los gráficos de alta calidad: visualización de datos y producción de gráficos para artículos.

• La comunidad de R es muy dinámica, con gran crecimiento del número de paquetes, e integrada por estadísticos de gran renombre (ej., J.

Chambers, L. Terney, B. Ripley, D. Bates, . . . ).

• Hay extensiones específicas a nuevas áreas como bioinformática, geoestadística y modelos gráficos.

(10)

Proyecto R - Instalación

Depende del sistema operativo, pero todo se puede encontrar en http://cran.es.r-project.org/bin

Para Windows se puede obtener un ejecutable desde

http://cran.es.r-project.org/bin/windows/base Al ejecutar el archivo se instalará el sistema base y los paquetes recomendados.

(11)

Proyecto R - Paquetes

R consta de un sistema base y de paquetes adicionales que extienden su funcionalidad. Podemos encontrarlos en

http://cran.es.r-project.org/src/contrib/PACKAGES.html Tipos de paquetes:

(12)

Proyecto R - Paquetes

R consta de un sistema base y de paquetes adicionales que extienden su funcionalidad. Podemos encontrarlos en

http://cran.es.r-project.org/src/contrib/PACKAGES.html Tipos de paquetes:

Los que forman parte del sistema base (ctest, graphics, . . . ).

Los que no son parte del sistema base, pero son recommended (xlsx,

(13)

Proyecto R - Paquetes

R consta de un sistema base y de paquetes adicionales que extienden su funcionalidad. Podemos encontrarlos en

http://cran.es.r-project.org/src/contrib/PACKAGES.html Tipos de paquetes:

Los que forman parte del sistema base (ctest, graphics, . . . ).

Los que no son parte del sistema base, pero son recommended (xlsx,

survival, nlme, . . . ).

Otros paquetes (UsingR, foreing, . . . ). Éstos se han de seleccionar e instalar individualmente.

(14)

Proyecto R - Documentación

Los manuales de R, incluidos en toda instalación.

• An introduction to Ra.

a

(15)

Proyecto R - Documentación

Los manuales de R, incluidos en toda instalación.

• An introduction to Ra.

• Writing R extensions.

a

(16)

Proyecto R - Documentación

Los manuales de R, incluidos en toda instalación.

• An introduction to Ra.

• Writing R extensions.

• R data import/export.

a

(17)

Proyecto R - Documentación

Los manuales de R, incluidos en toda instalación.

• An introduction to Ra.

• Writing R extensions.

• R data import/export.

• The R language definition.

a

(18)

Proyecto R - Documentación

Los manuales de R, incluidos en toda instalación.

• An introduction to Ra.

• Writing R extensions.

• R data import/export.

• The R language definition.

• R installation and administration.

a

(19)

Primeros pasos - Inicio

Iniciar una sesión de R

(20)

Primeros pasos - Inicio

Iniciar una sesión de R

Hacer doble-click en el icono. Se abrirá Rgui.exe.

Desde una ventana del sistema ejecutar Rterm.exe. Parecido a R en Unix o Linux.

(21)

Primeros pasos - Inicio

Iniciar una sesión de R

Hacer doble-click en el icono. Se abrirá Rgui.exe.

Desde una ventana del sistema ejecutar Rterm.exe. Parecido a R en Unix o Linux.

(22)

Primeros pasos - GUI de R

El programa R viene con una GUI (del inglés Graphical User Interface) que facilita la interacción entre el usuario y el programa. Hay otros proyectos abiertos que proporcionan otras GUI para R:

(23)

Primeros pasos - GUI de R

El programa R viene con una GUI (del inglés Graphical User Interface) que facilita la interacción entre el usuario y el programa. Hay otros proyectos abiertos que proporcionan otras GUI para R:

JGR o Java GUI for R, una terminal de R multiplataforma basada en Java.

R Commander (Rcmdr), una interfaz gráfica multiplataforma basada en

(24)

Primeros pasos - GUI de R

El programa R viene con una GUI (del inglés Graphical User Interface) que facilita la interacción entre el usuario y el programa. Hay otros proyectos abiertos que proporcionan otras GUI para R:

JGR o Java GUI for R, una terminal de R multiplataforma basada en Java.

R Commander (Rcmdr), una interfaz gráfica multiplataforma basada en

tcltk.

(25)

Primeros pasos - GUI de R

El programa R viene con una GUI (del inglés Graphical User Interface) que facilita la interacción entre el usuario y el programa. Hay otros proyectos abiertos que proporcionan otras GUI para R:

JGR o Java GUI for R, una terminal de R multiplataforma basada en Java.

R Commander (Rcmdr), una interfaz gráfica multiplataforma basada en

tcltk.

RExcel, que permite usar R y Rcmdr desde Microsoft Excel.

(26)

Primeros pasos - GUI de R

El programa R viene con una GUI (del inglés Graphical User Interface) que facilita la interacción entre el usuario y el programa. Hay otros proyectos abiertos que proporcionan otras GUI para R:

JGR o Java GUI for R, una terminal de R multiplataforma basada en Java.

R Commander (Rcmdr), una interfaz gráfica multiplataforma basada en

tcltk.

RExcel, que permite usar R y Rcmdr desde Microsoft Excel.

rggobi, una interfaz a GGobi para visualización.

(27)
(28)

Primeros pasos - Primera sesión

> rnorm(3)

[1] -0.39413467 0.08327595 -0.63666036 > x <- rnorm(3)

> summary(x)

Min. 1st Qu. Median Mean 3rd Qu. Max.

-0.6043 -0.5263 -0.4484 -0.4339 -0.3487 -0.2490 > w <- summary(x)

> w

Min. 1st Qu. Median Mean 3rd Qu. Max.

(29)

Primeros pasos - R como calculadora

> 2 + 2 [1] 4 > sqrt(10) [1] 3.162278 > 2 * 3 * 4 * 5 [1] 120 > 1000 * (1 + 0.075)^5 - 1000 [1] 435.6293 > sin(c(0, 30, 45, 60, 90) * pi/180) [1] 0.0000000 0.5000000 0.7071068 0.8660254 1.0000000

(30)

Primeros pasos - La ayuda de R

(31)

Primeros pasos - La ayuda de R

• ?rnorm

(32)

Primeros pasos - La ayuda de R

• ?rnorm

• help.start()

(33)

Primeros pasos - La ayuda de R

• ?rnorm

• help.start()

• ?help.search

(34)

Primeros pasos - La ayuda de R

• ?rnorm • help.start() • ?help.search • help.search(“normal”) • ?apropos

(35)

Primeros pasos - La ayuda de R

• ?rnorm • help.start() • ?help.search • help.search(“normal”) • ?apropos • apropos(“normal”)

(36)

Primeros pasos - La ayuda de R

• ?rnorm • help.start() • ?help.search • help.search(“normal”) • ?apropos • apropos(“normal”) • ?demo

(37)

Primeros pasos - La ayuda de R

• ?rnorm • help.start() • ?help.search • help.search(“normal”) • ?apropos • apropos(“normal”) • ?demo

(38)

Primeros pasos - Paquetes adicionales

(39)

Primeros pasos - Paquetes adicionales

• Desde el menú Packages->Install package(s).

(40)

Primeros pasos - Paquetes adicionales

• Desde el menú Packages->Install package(s).

• Primero nos pide seleccionar el “CRAN mirror”.

(41)

Primeros pasos - Paquetes adicionales

• Desde el menú Packages->Install package(s).

• Primero nos pide seleccionar el “CRAN mirror”.

• Desde R, con install.packages().

(42)

Primeros pasos - Paquetes adicionales

• Desde el menú Packages->Install package(s).

• Primero nos pide seleccionar el “CRAN mirror”.

• Desde R, con install.packages().

• Desde una “ventana del sistema”.

(43)

Primeros pasos - Paquetes adicionales

• Desde el menú Packages->Install package(s).

• Primero nos pide seleccionar el “CRAN mirror”.

• Desde R, con install.packages().

• Desde una “ventana del sistema”.

• Rcmd INSTALL paquete

(44)

Primeros pasos - Un editor adecuado

¿Por qué usar R desde un editor?

• El uso de scripts y el mantenimiento del código ordenado y comentado es una buena práctica estadística.

(45)

Primeros pasos - Un editor adecuado

¿Por qué usar R desde un editor?

• El uso de scripts y el mantenimiento del código ordenado y comentado es una buena práctica estadística.

(46)

Primeros pasos - Un editor adecuado

¿Por qué usar R desde un editor?

• El uso de scripts y el mantenimiento del código ordenado y comentado es una buena práctica estadística.

• Colores de sintaxis, completa paréntesis, . . .

• Una interface común para otros paquetes estadísticos (SAS, XLispStat, Arc, Excel, . . . ), numéricos (Octave, . . . ) o procesador de texto (LaTeX, . . . ).

(47)

Primeros pasos - Un editor adecuado

¿Por qué usar R desde un editor?

• El uso de scripts y el mantenimiento del código ordenado y comentado es una buena práctica estadística.

• Colores de sintaxis, completa paréntesis, . . .

• Una interface común para otros paquetes estadísticos (SAS, XLispStat, Arc, Excel, . . . ), numéricos (Octave, . . . ) o procesador de texto (LaTeX, . . . ).

(48)

Primeros pasos - El primer ejemplo

Sea X una variable aleatorio con distribucióon exponencial de parámetro α y

X1, X2, . . . , Xn una muestra aleatoria simple. Se sabe que la distribución de

Z = n · min {X1, X2, . . . , Xn} es exponencial de parámetro α.

> alpha <- 0.01 > n <- 50

> m <- 1000

> datos <- matrix(rexp(n * m, alpha), ncol = n) > fz <- function(x) n * min(x)

> z <- apply(datos, 1, fz) > mean(z)

(49)

Primeros pasos - El primer ejemplo

> hist(z, freq = F)

> points(dexp(0:600, alpha), type = "l") > ks.test(z, "pexp", alpha)

One-sample Kolmogorov-Smirnov test data: z

D = 0.045, p-value = 0.03495

(50)

Objetos de R - ¿Qué son?

Casi todo en R es un objeto, incluyendo funciones y estructuras de datos.

• Para saber los objetos que tenemos en el espacio de trabajo utilizaremos ls().

(51)

Objetos de R - ¿Qué son?

Casi todo en R es un objeto, incluyendo funciones y estructuras de datos.

• Para saber los objetos que tenemos en el espacio de trabajo utilizaremos ls().

(52)

Objetos de R - ¿Qué son?

Casi todo en R es un objeto, incluyendo funciones y estructuras de datos.

• Para saber los objetos que tenemos en el espacio de trabajo utilizaremos ls().

Escribir el nombre de un objeto muestra su contenido: mean.

• Para guardar el contenido del espacio de trabajo se pueden utilizar las funciones save.image() y save(<objetos>,file=“nombre.RData”).

(53)

Objetos de R - ¿Qué son?

Casi todo en R es un objeto, incluyendo funciones y estructuras de datos.

• Para saber los objetos que tenemos en el espacio de trabajo utilizaremos ls().

Escribir el nombre de un objeto muestra su contenido: mean.

• Para guardar el contenido del espacio de trabajo se pueden utilizar las funciones save.image() y save(<objetos>,file=“nombre.RData”).

• Se puede acceder a objetos de la carpeta de trabajo o del camino que especifiquemos.

(54)

Objetos de R - Tipos de objetos

• Objetos del lenguaje

• Llamadas • Expresiones • Nombres • Expresiones • Funciones • Lista de argumentos • Código • Entorno

(55)

Objetos de R - Vector

Vector: Colección ordenada de elementos del mismo tipo

> x <- c(1, 2, 3) > x

[1] 1 2 3

> y <- c(FALSE, TRUE, TRUE) > y

[1] FALSE TRUE TRUE > z <- c("a", "b", "c") > z

(56)

Objetos de R - Array

Array: Generalización multidimensional del vector. Elementos del mismo tipo.

> mat <- matrix(rnorm(9), ncol = 3) > mat

[,1] [,2] [,3]

[1,] -0.8546732 -0.3515071 0.1269125 [2,] 1.7731786 -0.3079295 -0.0849302 [3,] -0.5036908 -0.9784104 -0.4556152

(57)

Objetos de R - Data frame

data frame: Como el array, pero con columnas de diferentes tipos. Es el objeto más habitual para los datos experimentales.

> dades <- data.frame(ID = c("gen0", "genB", "genZ"), subj1 = c(10, + 25, 33), subj2 = c(NA, 34, 15), oncogen = c(TRUE, TRUE, FALSE),

+ loc = c(1, 30, 125))

> dades

ID subj1 subj2 oncogen loc

1 gen0 10 NA TRUE 1

2 genB 25 34 TRUE 30

(58)

Objetos de R - Factor

factor: Tipo de vector para datos cualitativos.

> x <- c(1, 2, 2, 1, 1, 2, 1, 2, 1) > x [1] 1 2 2 1 1 2 1 2 1 > x <- factor(c(1, 2, 2, 1, 1, 2, 1, 2, 1)) > x [1] 1 2 2 1 1 2 1 2 1 Levels: 1 2

(59)

Objetos de R - Lista

list: vector generalizado. Cada lista está formada por componentes que pueden ser de distinto tipo. Son contenedores generales de datos. Muy

flexibles, pero sin estructura. Muchas funciones devuelven una lista o conjunto de resultados de distinta longitud y distinto tipo.

> una.lista <- list(vec = rnorm(5), mat = matrix(rnorm(4), ncol = 2)) > una.lista $vec [1] 0.1102119 -0.1345766 0.7536878 -0.8123064 -0.6643130 $mat [,1] [,2] [1,] -0.43561329 -1.400254 [2,] -0.06045704 -1.749240

(60)

Objetos de R - Atributos

Atributos de los objetos

• Modo: Tipo básico en un vector o array: lógico, entero, real, carácter, . . .mode

(61)

Objetos de R - Atributos

Atributos de los objetos

• Modo: Tipo básico en un vector o array: lógico, entero, real, carácter, . . .mode

(62)

Objetos de R - Atributos

Atributos de los objetos

• Modo: Tipo básico en un vector o array: lógico, entero, real, carácter, . . .mode

• Tipo: Tipo de los vectores o arrays: double, character, . . .typeof

• Nombres: Etiquetas de los elementos individuales de un vector o lista:

(63)

Objetos de R - Atributos

Atributos de los objetos

• Modo: Tipo básico en un vector o array: lógico, entero, real, carácter, . . .mode

• Tipo: Tipo de los vectores o arrays: double, character, . . .typeof

• Nombres: Etiquetas de los elementos individuales de un vector o lista:

names

(64)

Objetos de R - Atributos

Atributos de los objetos

• Modo: Tipo básico en un vector o array: lógico, entero, real, carácter, . . .mode

• Tipo: Tipo de los vectores o arrays: double, character, . . .typeof

• Nombres: Etiquetas de los elementos individuales de un vector o lista:

names

• Dimensiones: Dimensiones de los arrays (alguna puede ser cero): dim

(65)

Objetos de R - Atributos

Atributos de los objetos

• Modo: Tipo básico en un vector o array: lógico, entero, real, carácter, . . .mode

• Tipo: Tipo de los vectores o arrays: double, character, . . .typeof

• Nombres: Etiquetas de los elementos individuales de un vector o lista:

names

• Dimensiones: Dimensiones de los arrays (alguna puede ser cero): dim

• Dimnames: Nombres de las dimensiones de los arrays: dimnames

(66)

Objetos de R - Atributos

Atributos de los objetos

• Modo: Tipo básico en un vector o array: lógico, entero, real, carácter, . . .mode

• Tipo: Tipo de los vectores o arrays: double, character, . . .typeof

• Nombres: Etiquetas de los elementos individuales de un vector o lista:

names

• Dimensiones: Dimensiones de los arrays (alguna puede ser cero): dim

• Dimnames: Nombres de las dimensiones de los arrays: dimnames

(67)

Objetos de R - Atributos

> x <- 1:15 > length(x) [1] 15

> y <- matrix(5, nrow = 3, ncol = 4) > dim(y) [1] 3 4 > is.vector(x) [1] TRUE > is.vector(y) [1] FALSE

(68)

Objetos de R - Atributos

> x1 <- 1:5 > x2 <- c(1, 2, 3, 4, 5) > x3 <- "patata" > x4 <- TRUE > typeof(x1) [1] "integer" > typeof(x2) [1] "double" > typeof(x3) [1] "character"

(69)

Objetos de R - Atributos

> w <- data.frame(Suj = c("Suj 1", "Suj 2", "Suj 3"), Pes = c(56.1, + 73.6, 81.2), Alt = c(145, 165, 172))

> attributes(w) $names

[1] "Suj" "Pes" "Alt" $row.names

[1] 1 2 3 $class

(70)

Objetos de R - Atributos

> f1 <- function(x) { + return(2 * x) + } > attributes(f1) $source [1] "function(x) {return(2 * x)}" > is.function(f1) [1] TRUE > f1(4) [1] 8

(71)

Objetos de R - Nombres

• Los nombres válidos para un objeto son combinaciones de letras, números y el punto (“.”).

(72)

Objetos de R - Nombres

• Los nombres válidos para un objeto son combinaciones de letras, números y el punto (“.”).

(73)

Objetos de R - Nombres

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

(74)

Objetos de R - Nombres

• 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 es “case-sensitive”: x != X.

(75)

Objetos de R - Nombres

• 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 es “case-sensitive”: x != X.

• Hay nombres reservados (“function”, “if”, . . . ).

(76)

Objetos de R - Nombres

• 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 es “case-sensitive”: x != X.

• Hay nombres reservados (“function”, “if”, . . . ).

• Mejor evitar nombres que R usa (ej., “c”).

• Las asignaciones se hacen con “<-” y se recomiendan los espacios. El signo “=” se reserva para los argumentos de las funciones.

(77)

Objetos de R - Nombres

• 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 es “case-sensitive”: x != X.

• Hay nombres reservados (“function”, “if”, . . . ).

• Mejor evitar nombres que R usa (ej., “c”).

• Las asignaciones se hacen con “<-” y se recomiendan los espacios. El signo “=” se reserva para los argumentos de las funciones.

La función make.names convierte una cadena de texto en una cadena que pueda utilizarse como nombre de una variable en una matriz,

(78)

Objetos de R - Operadores aritméticos

• Suma +, resta -, multiplicación *, división /

• Potenciaˆ, raíz cuadrada sqrt

• División entera %/%, módulo: resto de la divisit’on entera %%

• Logaritmos log, log10, log2, logb(x, base), exponencial exp

• Trigonométricas sin, cos, tan, asin, acos, atan

• Otras max, min, range, pmax, pmin, mean, median, var, sd, quantile, sum,

prod, diff, cumsum, cumprod, cummax, cummin

Podemos ver sus argumentos y su utilización mediante el comando

(79)

Potencia gráfica de R

(80)

Potencia gráfica de R

• R incluye muchas y variadas funciones para hacer gráficos.

• El sistema permite desde gráficos muy simples a figuras de calidad para incluir en artículos y libros.

(81)

Potencia gráfica de R

• R incluye muchas y variadas funciones para hacer gráficos.

• El sistema permite desde gráficos muy simples a figuras de calidad para incluir en artículos y libros.

Sólo examinaremos la superficie. Más detalles en el libro R Graphics de Paul Murrell.

(82)

Potencia gráfica de R

• R incluye muchas y variadas funciones para hacer gráficos.

• El sistema permite desde gráficos muy simples a figuras de calidad para incluir en artículos y libros.

Sólo examinaremos la superficie. Más detalles en el libro R Graphics de Paul Murrell.

(83)

Potencia gráfica de R

• R incluye muchas y variadas funciones para hacer gráficos.

• El sistema permite desde gráficos muy simples a figuras de calidad para incluir en artículos y libros.

Sólo examinaremos la superficie. Más detalles en el libro R Graphics de Paul Murrell.

También podemos ver un buen conjunto de ejemplos con demo(graphics).

(84)

Potencia gráfica de R

• R incluye muchas y variadas funciones para hacer gráficos.

• El sistema permite desde gráficos muy simples a figuras de calidad para incluir en artículos y libros.

Sólo examinaremos la superficie. Más detalles en el libro R Graphics de Paul Murrell.

También podemos ver un buen conjunto de ejemplos con demo(graphics).

El comando plot es uno de los más utilizados para realizar gráficos.

Si escribimos plot(x, y) donde x e y son vectores con n coordenadas, entonces R representa el gráfico de dispersión con los puntos de

(85)

Potencia gráfica de R

El principal comando para generar un grá-fico en R es plot. Si generamos un vec-tor aleavec-torio de dimensión 10. Uno de los argumentos más útiles es type cuyos pará-metros pueden ser: p para puntos, l para líneas, . . . (?plot). Para representarlo gráfi-camente sólo tenemos que escribir:

> x<-rnorm(10) > plot(x) 2 4 6 8 10 −2 −1 0 1 2 Index x

(86)

Potencia gráfica de R

Podemos modificar ciertos atributos del gráfico, por ejemplo el color de la línea (col) y el tamaño de la línea (lwd ). R en-tiende como argumentos los nombres de los colores: red, green, blue, . . . . Podemos ver los colores predefinidos con la función

colours(). Si escribimos:

> plot(x, col=“red”, type=“l”, lwd=5)

2 4 6 8 10 −2 −1 0 1 2 Index x

(87)

Potencia gráfica de R

Podemos modificar los atributos de los límites del gráfico (xlim,ylim), las etiquetas de los ejes (xlab, ylab) y añadir un título (main). Podemos escribir:

> plot(x, col=“red”, type=“l”, lwd=5,

ylim=c(-4,4), xlab=“Eje X”, ylab=“Eje

Y”, main=“Nuestra primera gráfica en R”)

2 4 6 8 10 −4 −2 0 2 4

Nuestra primera gráfica en R

Eje X

(88)

Potencia gráfica de R - Líneas y puntos

Sobre un gráfico creado podemos añadir información secundaria en forma de líneas (lines, abline) y puntos (points). Podemos escribir:

> plot(x, col=“red”, type=“l”, lwd=5,

ylim=c(-4,4), xlab=“Eje X”, ylab=“Eje

Y”, main=“Nuestra primera gráfica en R”)

> points(x, col=“blue”,cex=3, pch=21, bg=“green”, lwd=3) > abline(lm(x˜seq(1,10)), lty=3, lwd=5, col=“orange”) 2 4 6 8 10 −4 −2 0 2 4

Nuestra primera gráfica en R

Eje X

(89)

Potencia gráfica de R - Texto

Otra opción interesante es la de introducir texto en nuestras figuras, para ello utilizare-mos el comando text que permite añadir texto en cualquier zona del gráfico. Pode-mos escribir:

> plot(x, col = “red”, type = “l”, lwd = 5, ylim = c(-4,4), xlab = “Eje X”, ylab = “Eje Y”, main = “Nuestra primera gráfica en R”)

> points(x, col = “red”,cex = 3, pch = 21, bg = “red”)

> text(x, label = format(x, digits = 2, nsmall = 2), cex = 1, font = 2) 2 4 6 8 10 −4 −2 0 2 4

Nuestra primera gráfica en R

Eje X Eje Y −0.44 −2.37 −0.71 0.86 0.20 0.77 0.51 0.31 0.91 2.32

(90)

Potencia gráfica de R - Otros comandos

El comando plot no es el único que existe para generar figurar, hay otros como:

boxplot, barplot, cdplot, pie, . . . Podemos

escribir:

> par(mfrow=c(2,2))

> boxplot(InsectSprays$count

Insect-Sprays$spray, col = “red”)

> barplot(tapply(InsectSprays$count,

IN-DEX = InsectSprays$spray, FUN = “mean”))

> pie(table(InsectSprays$spray), col = rainbow(6)) > barplot(tapply(InsectSprays$count, INDEX A B C D E F 0 5 10 15 20 25 A B C D E F 0 5 10 15 A B C D E F A B C D E F 0 5 10 15

(91)

Potencia gráfica de R - Y más

• Podemos modificar márgenes exteriores de figuras y entre figuras (ver

?par, opciones: oma, omi, mar, mai, . . . ).

También gráficos 3D: persp, image, contour ; histogramas: hist; gráficos de barras: barplot; gráficos de comparación de cuantiles, usados para comparar la distribución de dos variables, o la disribución de unos datos frente a un estándar: qqplot, qqnorm y, en paquete car, qq.plot.

Notación matemática (plotmath) y expresiones de texto arbitrariamente complejas.

(92)

Programación en R

• Principales instrucciones

• if(cond) expr

• if(cond) cons.expr else alt.expr

• for(var in seq) expr

• while(cond) expr

• switch

• repeat expr

• break

• next

(93)

Programación en R - Comando if

IF significa SI (condicional). Su funcionamiento es simple, se evalúa una

condición, si es verdadera ejecuta un código, si es falsa, ejecuta otro código (o continúa con la ejecución del programa).

> f4 <- function(x) { + if (x > 5) + print("x > 5") + else { + y <- runif(1) + print(paste("y es ", y)) + } + } > f4(3) [1] "y es 0.101673830067739"

(94)

Programación en R - Comando ifelse

ifelse es una versión vectorizada del comando if

> x <- c(4, 6, 7, 3, 1, 3) > ifelse(x > 5, x/2, x * 2) [1] 8.0 3.0 3.5 6.0 2.0 6.0

(95)

Programación en R - Comando for

Una de las estructuras de repetición empleada en la programación de

algoritmos para repetir un código (una o más sentencias de programación) dependiendo de un contador.

> for (i in 1:5) cat("el valor de i es", i, "\n") el valor de i es 1

el valor de i es 2 el valor de i es 3 el valor de i es 4 el valor de i es 5

(96)

Programación en R - Comando while

Existen otras estructuras de repetición que no dependen de un contador y si dependen de una condición.

> x <- 2 > while (x < 100) { + x <- x^2 + print(x) + } [1] 4 [1] 16 [1] 256

(97)

Programación en R - Comando switch

Podemos utilizar estructuras condicionales para ejecutar acciones. la función

switch nos permite utilizar estas opciones

> cadena <- "Owl Genomics - Curso de R, 2011"

> switch("my", my = toupper(cadena), mn = tolower(cadena), ig = cadena) [1] "OWL GENOMICS - CURSO DE R, 2011"

> switch("mn", my = toupper(cadena), mn = tolower(cadena), ig = cadena) [1] "owl genomics - curso de r, 2011"

(98)

Importar datos con R

Si vamos a trabajar con un conjunto de datos grande, es evidente, que no los vamos a introducir “uno a uno”. R tiene varias funciones incorporadas para facilitar esta tarea y pude importar datos desde una gran variedad de formatos (*.csv, *.xls, *.xlsx, *.sav, *.txt, . . . ). Vamos a centrarnos en las principales

funciones: • read.table()read.csv(), read.csv2()read.xls(), read.xlsx()a a Con la librer´ıa xlsx

(99)

Importar datos con R - read.table()

Con la función read.table() podemos importar directamente un data.frame. La sintaxis completa de la función es:

read.table (fichero, header=TRUE,sep=“ ”, . . . )

Donde fichero es el nombre del fichero que queremos leer, header indica si nuestro fichero tiene los nombres de las variables en el encabezado y sep indica la separación existente entre las variables (“ ” indica un espacio en blanco, “\t” indica un tabulador, “;” indica punto y coma, . . . ).

(100)

Importar datos con R - read.csv()

Hablamos de read.csv() y read.csv2() para leer ficheros con extensión *.csva. En muchos países europeos, el estándar es utilizar la “,” (coma) como

separador de los decimales y el “;” (punto y coma) como separador de las variables. Si nuestro fichero sigue este estándar, podemos utilizar la función

read.csv2 que tiene estos argumentos por defecto.

a

Los ficheros CSV (del ingl´es comma-separated values) son un tipo de documento en

formato abierto sencillo para representar datos en forma de tabla, en las que las columnas se separan por comas

(101)

Importar datos con R - read.csv()

Precio;Area;Edad 52.00;830;6.2 . . .

> datos <- read.csv2("datos.csv", header = TRUE) > datos

Precio Area Edad 1 52.00 830 6.2 2 54.75 710 7.5 3 59.75 900 1.9 > datos$Edad [1] 6.2 7.5 1.9 Levels: 1.9 6.2 7.5

(102)

Exportar datos con R

Complementarias a las funciones ya vistas existen las funciones:

write.table()

write.csv(), write.csv2()

write.xls(), write.xlsx()a

a

Figure

Actualización...

Referencias

Actualización...

Related subjects :