Sunteți pe pagina 1din 41

Programando con

R - Project

Basado en Introducción al entorno R


José R. Berrendero,
Dept. de Matemáticas, Universidad
Autónoma de Madrid

Eric Zárate
zarzzchile@gmail.com
R-Project
 El entorno R es un conjunto integrado de programas para manejo
de datos, cálculo y gráficos. Incluye:

 Comandos para manejar y almacenar conjuntos de datos


 Comandos para visualizar datos y exportar imagenes
 Operadores para llevar a cabo cálculos con vectores y matrices
 Comandos para llevar a cabo diversos análisis de datos
 Lenguaje Orientado a objetos
 Comandos para gráficos

zarzzchile (at) gmail.com 2


Dirección
 http://www.r-project.org

 Disponible para Windows y Linux

zarzzchile (at) gmail.com 3


Características generales
 Lenguaje orientado a objetos: Variables, datos, resultados, funciones, se
almacenan en el área de trabajo en forma de objetos con un nombre.

 Sobre los objetos pueden actuar operadores y funciones.

 Los nombres de los objetos empiezan por una letra.

 Los resultados pueden visualizarse directamente en la pantalla

 El operador de asignación de valores a un objeto es “  ”.

 Todas las operaciones se pueden almacenar en variables

 Los comandos ls() y ls.str() generan listas de los objetos en el área de


trabajo.

 Con rm() podemos borrar objetos.

zarzzchile (at) gmail.com 4


Comandos Simples
> list.files() # Lista de archivos del área de trabajos

> ls() # Lista de Objetos: > ls()

> x<-c(“A”,”B”,”C”) # crea el objeto x con elementos “A”,”B”,”C”

> x # Muestra el contenido del objeto x

> rm(x) # Borra el objeto “x”

> 5 -> n # asigna el valor 5 a “n”

zarzzchile (at) gmail.com 5


Ayuda en R
 Mediante help(comando) se obtiene ayuda sobre cada
comando o conjunto de datos.

 La función example(comando) proporciona ejemplos de uso


del comando.

 El comando help.search(’tema’) proporciona una lista de


comandos relacionados con tema.

 Para abrir una ventana de ayuda HTML, help.start().

 Una lista de los paquetes disponibles se obtiene con


library() y otra con los conjuntos de datos disponibles se
obtiene con data().

zarzzchile (at) gmail.com 6


Vectores
 Algunos ejemplos sobre cómo construir vectores regulares y extraer
información sobre sus elementos:

zarzzchile (at) gmail.com 7


Matrices
 Una matriz es un vector con dos atributos adicionales:

– dim: Contiene, por este orden el número de filas y de columnas.


– dimnames: Contiene los nombres de las filas y/o las columnas.

 El comando matrix(x,nrow=m,ncol=n) permite crear una matriz de n


columnas y m filas con los elementos de x:

zarzzchile (at) gmail.com 8


Matrices
 Extraer elementos

zarzzchile (at) gmail.com 9


Matrices
 Concatenar vectores

zarzzchile (at) gmail.com 10


Operación con vectores y
matrices

zarzzchile (at) gmail.com 11


Función apply()
 La función apply permite evitar el uso de bucles y otras estructuras,
trabajando directamente con matrices.
apply(x,n,función)
x es una matriz, n puede ser 1 o 2, y función es el nombre del
comando que actúa sobre los vectores.

 Si n = 1 se genera un nuevo vector como resultado de aplicar


función a cada fila de x. Si n = 2, se genera un nuevo vector como
resultado de aplicar función a cada columna de x
 Por ejemplo, apply(x,2,median) calcula las medianas de las
columnas de x.

zarzzchile (at) gmail.com 12


Función tapply()
 La función tapply(x,y,función) calcula la función especificada
sobre el objeto x según las categorías de y.

zarzzchile (at) gmail.com 13


Modelos de Probabilidad
 Cada distribución de probabilidad tiene un identificador en R:

norm, binom, pois, exp, t, chisq, f, …

 A cada identificador se le antepone un prefijo que determina una


función relacionada:

zarzzchile (at) gmail.com 14


Distribuciones en R

zarzzchile (at) gmail.com 15


Ejemplo
 La mediana de una exponencial de parámetro
se obtiene mediante la expresión
> qexp(0.5,2)

 La probabilidad de que una v.a. sea menor o


igual que 7 es
> pchisq(7,5,2)

zarzzchile (at) gmail.com 16


Análisis descriptivo
 Medidas numéricas básicas:
– summary(x)
– var(x)
– sd(x)
– mean(x)
– median(x)
– cor(x,y)
– cov(x,y)

 Principales gráficos:
– hist(x)
– boxplot(x)
– qqnorm(x)
– qqline(x)
– plot(x,y)
– plot(ecdf(x),verticals=T,do.points=F)
– barplot(table(x))
– pie(table(x))

zarzzchile (at) gmail.com 17


Análisis descriptivo

zarzzchile (at) gmail.com 18


Gráficos
 Comandos de alto nivel: Son comandos con los que se
puede crear un gráfico nuevo.

 Comandos de bajo nivel: Son comandos que permiten


añadir elementos (puntos, líneas, texto,etc.) a un gráfico
ya existente

 Parámetros: Permiten modificar el aspecto de los gráficos.

 Paquetes especializados: Los paquetes grid y lattice,


distribuidos con la versión básica de R, contienen más
comandos para nuevos gráficos.

zarzzchile (at) gmail.com 19


Comandos alto nivel
• plot, hist, boxplot, piechart, qqnorm, …

 Para cada función hay una serie de argumentos opcionales. Estos son
los más importantes:

zarzzchile (at) gmail.com 20


Comandos bajo nivel
 La siguiente tabla contiene los más importantes y cuál es su función:

zarzzchile (at) gmail.com 21


Parámetros de gráficos
 La tabla siguiente contiene los principales parámetros y el aspecto del
gráfico que controlan

zarzzchile (at) gmail.com 22


Ejemplo

zarzzchile (at) gmail.com 23


Resultado

zarzzchile (at) gmail.com 24


Gráficos por ventana
 Empezamos con par(mfrow=c(filas,columnas)) antes del
comando plot.

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


> plot(rnorm(10))
> plot(runif(5), rnorm(5))
> plot(runif(10))
> plot(rnorm(10), rnorm(10))

 Podemos mostrar muchos gráficos en el mismo dispositivo gráfico.

zarzzchile (at) gmail.com 25


Ubicación del área de trabajo
 Get Working Directory: getwd()
getwd()
[1] "C:/Program Files/R/R-2.6.0"

 Ir al forder c:\COLOQUIO-R
setwd("c:/COLOQUIO-R")
getwd()
[1] "c:/COLOQUIO-R"

 O también:
setwd("c:\\COLOQUIO-R")

zarzzchile (at) gmail.com 26


Guardar y leer datos
 Resulta muy importante poder guardar datos, funciones, etc., para ser
usados en otras sesiones de R. Esos datos así guardados pueden
compartirse con otros usuarios e incluso utilizarse en distintos sistemas
operativos.

> x <- runif(20)


> y <- list(a = 1, b = TRUE, c = "patata")
> save(x, y, file = "xy.RData")

• Los leeremos con

> load("xy.RData")

zarzzchile (at) gmail.com 27


Guardar y leer datos
 Podemos salvar todos los objetos con

> save.image() # salvado como ".RData"


> save.image(file = "un.nombre.RData")

 El fichero .RData se carga al iniciarse R.

 R y muchos otros paquetes incorporan ficheros con datos. Se cargan con


load(nombre.fichero).

 La instrucción data permite cargar ficheros de las librerías disponibles.

> rm(list = ls()) # borrar todo el workspace


> data() # muestra todos los ficheros
> data(iris)
> data(iris, package = "base") # equivalente
> ?iris

zarzzchile (at) gmail.com 28


Exportar datos
 Lo más sencillo es exportar una matriz (es necesario transponer la matriz).

> write(t(x), file = "c:/dir/data.txt",


+ ncolumns = n,
+ append = FALSE)

 Pero para exportar un data.frame es mejor

> write.table(my.data.frame,
+ file = "mi.output.txt",
+ sep = "",row.names = FALSE,
+ col.names = TRUE)

 Para escribir un fichero CSV importable desde Excel

> write.table(x, file = "foo.csv", sep = ",",


+ col.names = NA)

zarzzchile (at) gmail.com 29


Formas para manipular a un
archivo externo
 Caso texto: Tinn-R, notepad, wordpad, word
azucar <- read.table(“azucares en yacon.txt”, header=T)

 Caso Excel
Archivo: Labranza.xls
Tabla de datos: datos
canal <- odbcConnectExcel("Labranza.xls")
labranza <- sqlFetch(canal,"datos")
odbcCloseAll()

 Caso CSV
labranza <- read.csv(“Labranza.csv”,header=TRUE)

zarzzchile (at) gmail.com 30


Crear Script
 Archivos .R

 Desde el menú Inicio, seleccionar nuevo script


 Se cargan con el comando source(“name_file.R”)

 Al cargar el script, se ejecutan todos las líneas al


momento.
 También se pueden crear funciones, las cuales se cargan
al momento de cargar el archivo y son usadas como
objetos.

zarzzchile (at) gmail.com 31


Funciones en R
my_func<-function(var1, var2, …){
sentencia
sentencia

return(var)
}

• my_func es el nombre del objeto que tendrá la función definida


 Para utilizar la función, se llama con este nombre y entre
paréntesis los parámetros solicitados
 La función devuelve un objeto como resultado, según la sentencia
return

zarzzchile (at) gmail.com 32


Condición if - else
if(expresion){
sentencia

}else{
sentencia

}

expresion es una sentencia logica. Por ejemplo:

x=55
y=54
if(x != y){
cat("reprobado \n")
}else{
cat("aprobado \n")
}

zarzzchile (at) gmail.com 33


Bucle for
for(variable in vector){
sentencia
sentencia

}

variable es el objeto de control dentro del for, el cual toma los


valores del objeto vector. Por ejemplo:

z<-c(5,4,10,25,103)
for(i in z){
cat("el valor leido es ",i," ... seguimos \n");
}

zarzzchile (at) gmail.com 34


Bucle while
while(condicion){
sentencia

}

condicion es una sentencia lógica, el cual mientras se mantenga


en verdadero se ejecuta las sentencias dentro de while . Por ejemplo:

i=0
while(i < 5){
cat("el valor leido es ",i," ... seguimos \n");
i=i+1
}

zarzzchile (at) gmail.com 35


Bucle repeat
repeat{
sentencia

}

El bucle repeat se ejecuta hasta encontrar una sentencia break,


que es la única forma de detener repeat.

También se puede usar la sentencia next, que funciona como el


continue de C, el cual salta un ciclo de ejecución.

zarzzchile (at) gmail.com 36


Ejemplos
my_media<-function(vector){

suma <- 0
for(i in 1:length(vector)){
suma <- vector[i] + suma
}

prom <- suma/length(vector)

par(mfrow=c(2,1))
plot(vector)
hist(vector)

return(prom)
}

zarzzchile (at) gmail.com 37


Ejemplos
my_var<-function(vector){

prom<-my_media(vector)

tmp<-vector-prom

tmp<-tmp^2

var<-sum(tmp)/(length(vector)-1)

par(mfrow=c(2,1))
plot(vector,type="h")
barplot(vector)

return(var)
}

zarzzchile (at) gmail.com 38


my_sim<-function(lanzamientos,save_img=0){
x<-round(runif(lanzamientos,-0.5,1.5))
x_sort<-sort(x)

# en el vector y tendre el contador de los elementos


y <- 1
j <- 1
elemento <- x_sort[1]

for(i in 2:length(x)){
if(elemento == x_sort[i]){
y[j] = y[j] + 1
}else{
elemento <- x_sort[i]
j <- j+1
y[j] <- 1
}
}
y <- y/sum(y)

if(save_img==1){
name_grafico<-paste("Grafico1 elementos=",lanzamientos,".jpg",sep="")
jpeg(name_grafico)
}
par(mfrow=c(2,2))
plot(x)
hist(x)

plot(c(0,1),y,type="h", xlab="eventos")

names(y)=c(0,1)
barplot(y, xlab="eventos")

if(save_img==1){
dev.off()
cat("Grafico Guardado \n")
}
}

zarzzchile (at) gmail.com 39


Mayor información
 Francesc Carmona, Curso básico de R

 R Development Core Team, Introduccion a R

 Emmanuel Paradis, R para Principiantes

zarzzchile (at) gmail.com 40


Programando con
R - Project

Eric Zárate Zárate

zarzzchile (at) gmail.com 41

S-ar putea să vă placă și