Introducción Lenguaje R
Introducción al lenguaje R
Introducción a la minería de datos con aplicaciones
Elmer Fernández12 Cristóbal Fresno1 Diego Arab1
1Grupo de Minería de Datos en Biociencias Universidad Católica de Córdoba
2CONICET
Introducción Lenguaje R
Agenda
1 Introducción
Historia
Características
2 Lenguaje R
Generalidades Tipos de Datos
Introducción
Lenguaje R
Historia
Características
Historia
Orígenes...
Lenguaje S
S es un lenguaje desarrollado porBell Labs(1976).
S se inició como un estándar interno para el análisis
estadístico (originalmentelibrerías en Fortran).
1988, se reescribe enC (Versión 3).
1998, sale al mercado laVersión 4.
2004, Insightful implementóS-PLUS(GUI, etc.)
Introducción
Lenguaje R
Historia
Características
Historia
Orígenes...
Lenguaje R
Res un dialecto de S (está antes en el diccionario).
1991,creadoen Nueva Zelanda por RossIhakay Robert
Gentleman.
1993, primer versión de R para el público.
1995, R pasa a serGNU.
1996, R mailing list.
1997, se crea el R Core Group (con gente de S-PLUS).
2000, R versión1.0.0
2010, R versión2.10.0
Introducción
Lenguaje R
Historia
Características
Características
Lenguaje descriptingcon sintaxis similar a S.
Alternativa a Matlab, Octave, etc... Esgratuitoymultiplataforma
En Windows, lleva un poco más de trabajo. Ampliamente soportados enLinuxsi se compila!!.
Funcionalidades divididas enpaquetes.
Mucharedundanciay documentación dispersa...
Introducción
Lenguaje R
Generalidades
Tipos de Datos Estructuras de Control Funciones
Lenguaje R
Conceptos...
¿Cómo está organizado R?
Conceptualmente dividido en 2:
R-base(utils, methods, datasets, stats, graphics...)
R-contribel resto de los paquetes...
Repositorios
Colección de paquetes con diferentes objetivos R-Forge
Bioconductor http://bioconductor.org CRAN http://cran.r-project.org
Introducción
Lenguaje R
Generalidades
Tipos de Datos Estructuras de Control Funciones
Entornos para R...
En Windows
El provisto por defecto por el instalador (nativo).
Rcmdrprimera interacción (Java,→librería compartida).
Tinn-Rmuy flexible (usamos este!!!).
Si tenemos elerrorsource(.trPaths[5], echo=TRUEAgregar en ../R/etc/Rprofile.site
.trPaths <- paste(paste(Sys.getenv(’APPDATA’), ’\\Tinn-R\\tmp\\’, sep=”), c(”, ’search.txt’, ’objects.txt’,
’file.r’, ’selection.r’, ’block.r’, ’lines.r’), sep=”)
En Linux
Rcmdrpara una primera interacción (Java).
Genome→RGedit.
KDE→RKaward.
Introducción
Lenguaje R
Generalidades
Tipos de Datos
Estructuras de Control Funciones
Tipos de Datos
Existen5 tipos básicosde datos:
character,numeric,integer,complexylogical.
Contenedores
vectorymatrix→=tipo de datos.
factor, es un vector con“levels”→categóricos u ordinales.
list, lista que permite6=tipos de datos por registro.
data.frame, permite6=tipo de datos por atributo.
Literales
Por defectonumeric salvo con el sufijo “L” integer (ej: 1L).
Especiales:
Inf Ej.: 1/0 o 1/Inf. NA, NaN Not a Number NULL
Introducción
Lenguaje R
Generalidades
Tipos de Datos
Estructuras de Control Funciones
Operadores
Asignación“=”, “<-”, “->”, “«-” ámbito sup.Ambito“{” , “}”
Indices“$”, slot “@”, “[”=tipo y “[[” tipo contenido
Evaluación atómica“;” Secuencia“:”
Numéricos“+”, “−”, “∗”, “/”, “∧”, “%%”, “%/%” y “%∗%”
Relacionales“>”, “>=”, “<” y “<=”
Lógicos“==”, “! =”, “!”, “kk”, “&&”, “xor(...)”, “|” y “&”
Comentario“#” y “##” según el editor
Introducción
Lenguaje R
Generalidades
Tipos de Datos
Estructuras de Control Funciones
Atributos
A losobjetosde R se les puede asociaratributos
dim(matrix, data.frame),length(vector, list)
names,dimnanes,colnames,rownames
class
definidos por el usuario, etc.
Funciones asociadas
attributes(...)
Introducción
Lenguaje R
Generalidades
Tipos de Datos
Estructuras de Control Funciones
Ejemplo I
¿Qué hacen las siguientes sentencias?
x = 1:10; y = 10L; z = 1+5i
x = c("a", "b", "c")
vector("numeric", length = 10) -> x
m <- matrix(1:6, nrow = 2, ncol = 3)
m
dim(m)
attributes(m)
m = 1:10
dim(m) = c(2,5)
m
x <- 1:3; y <- 10:12
Introducción
Lenguaje R
Generalidades
Tipos de Datos
Estructuras de Control Funciones
Ejemplo II
¿Qué hacen las siguientes sentencias?
x <- list(1, "a", TRUE, 1 + 4i)
x <- factor(c("yes", "yes", "no", "yes"))
table(x); unclass(x)
x <- data.frame(foo = 1:3, bar=c(T, T, F))
nrow(x); ncol(x); names(x)
x$foo; x[[1]]; x[,1] ; x[,-2]; x[1,1]; x[”foo”];x[[”foo”]]
x[1, 2, drop = FALSE]
rep(10,4)
Introducción
Lenguaje R
Generalidades Tipos de Datos
Estructuras de Control
Funciones
Estructuras de Control
IF
Evaluación de los operadores de izquierda a derecha
1 if(<condicion>){<expresión>}
2 if(<condicion>){<expresiones 1, 2, ...>}
else{<expresiones 1, 2, ...>}
3 if(...){...}else if{...} else{...} 4 ifelse(<test>,<yes>,<no>)≡ :?en C++
switch
Devuelve un valor
Introducción
Lenguaje R
Generalidades Tipos de Datos
Estructuras de Control
Funciones
Estructuras Cíclicas
for
for(i in 1:10) {print(i) }
while i = 1
while(i < 11){ print(i) i=i+1}
repeat i = 1 repeat{
print(i) i=i+1
if(i==11)break}
next→siguiente iteración.
Looping functions
lapply, sobre un list.
apply, sobre una tabla.
sapply, apply simplificado.
Introducción
Lenguaje R
Generalidades Tipos de Datos Estructuras de Control
Funciones
Funciones
Son objetosde la clase “function”.
Se puedenpasar como parámetrocomo cualquier objeto.
Sintaxis:
fun1 = function(<argumentos>){
## código <return(...) > }
El valor deretornoes laúltima expresión que se evaluó,
Introducción
Lenguaje R
Generalidades Tipos de Datos Estructuras de Control
Funciones
Parámetros
Nohay pasaje “por referencia”→lexical scoping.
Pueden tenervalor por defecto.
La evaluación de los parámetros estardía→promesas.
Losinferenciade parámetros actuales se realiza por el siguiente orden:
1 Coincidenciaexactade nombre. 2 Coincidenciaparcialde nombre.
3 Por posición.
“...” permite recibir parámetrosadicionalespara otras
Introducción
Lenguaje R
Generalidades Tipos de Datos Estructuras de Control
Funciones
Depurando código
Resultanútileslas siguientes funciones:
message, simple mensaje en consola.
warning, problema menor sin parada.
stop, problema mayor con parada.
try,tryCatchpara manejo de exepciones.
warnings(),traceback()cuando las cosas explotan!!
Bibliografía
R project
Documentación en general.
http://www.r-project.org/doc/bib/R-books.html.
Mark Bravington
Debugging without (too many) tears.