1. Interfases con R
Seminarios Lic. en Estad´
ıstica
Bernardo Alvez da Cruz
IESTA – UDELAR
1 de junio de 2009
Bernardo Alvez da Cruz (IESTA – UDELAR) Interfases con R 1 de junio de 2009 1 / 24
2. 1 Introducci´n
o
2 Conexiones e interfases de red
Conexiones
Archivos de texto
El Proyecto Omegahat
Interfases de red
Sockets
3 R & bases de datos
Interfases simples
Hojas de c´lculo
a
Otros formatos
Interfases avanzadas
ODBC y RODBC
Bernardo Alvez da Cruz (IESTA – UDELAR) Interfases con R 1 de junio de 2009 2 / 24
3. Introducci´n
o
¿C´mo se comunica R con programas externos?
o
Motivaci´n
o
Importaci´n/exportaci´n de datos (R , paquetes)
o o
Grandes v´lumenes de datos, limitaci´n computacional
o o
Comunicaci´n con otros sistemas
o
Ejemplos
¿C´mo leo un archivo .xls con R ?
o
¿C´mo le agrego un an´lisis estad´
o a ıstico con R a un CRM (Customer
Relationship Management) hecho en Java?
¿C´mo proceso datos de una tabla almacenada en MySQL?
o
¿C´mo procesar las series de d´lar del Banco Central con R ?
o o
Bernardo Alvez da Cruz (IESTA – UDELAR) Interfases con R 1 de junio de 2009 3 / 24
4. Introducci´n
o
¿C´mo se comunica R con programas externos?
o
Motivaci´n
o
Importaci´n/exportaci´n de datos (R , paquetes)
o o
Grandes v´lumenes de datos, limitaci´n computacional
o o
Comunicaci´n con otros sistemas
o
Ejemplos
¿C´mo leo un archivo .xls con R ?
o
¿C´mo le agrego un an´lisis estad´
o a ıstico con R a un CRM (Customer
Relationship Management) hecho en Java?
¿C´mo proceso datos de una tabla almacenada en MySQL?
o
¿C´mo procesar las series de d´lar del Banco Central con R ?
o o
Bernardo Alvez da Cruz (IESTA – UDELAR) Interfases con R 1 de junio de 2009 3 / 24
5. Introducci´n
o
¿C´mo se comunica R con programas externos?
o
Motivaci´n
o
Importaci´n/exportaci´n de datos (R , paquetes)
o o
Grandes v´lumenes de datos, limitaci´n computacional
o o
Comunicaci´n con otros sistemas
o
Ejemplos
¿C´mo leo un archivo .xls con R ?
o
¿C´mo le agrego un an´lisis estad´
o a ıstico con R a un CRM (Customer
Relationship Management) hecho en Java?
¿C´mo proceso datos de una tabla almacenada en MySQL?
o
¿C´mo procesar las series de d´lar del Banco Central con R ?
o o
Bernardo Alvez da Cruz (IESTA – UDELAR) Interfases con R 1 de junio de 2009 3 / 24
6. 1 Introducci´n
o
2 Conexiones e interfases de red
Conexiones
Archivos de texto
El Proyecto Omegahat
Interfases de red
Sockets
3 R & bases de datos
Interfases simples
Hojas de c´lculo
a
Otros formatos
Interfases avanzadas
ODBC y RODBC
Bernardo Alvez da Cruz (IESTA – UDELAR) Interfases con R 1 de junio de 2009 4 / 24
7. Conexiones
Tipos de conexiones
Tipos de conexiones
Archivos de texto planos o comprimidos (.gz, .bz2)
Pipes para conexiones entre procesos (Unix-like)
Sockets soporte de sockets BSD (*nix, Windows)
Otros: terminales, url’s, conexiones de texto, etc.
Operaciones primitivas: open, read, write, close
Paquete: base
Funciones: file, url, gzfile, bzfile, unz, pipe, fifo, socketConnection
Ejemplos
mydata = scan(unz(’exportaciones2008.zip’,’enero2008.txt’))
pag = url(’http://www.iesta.edu.uy’); html = readLines(pag,-1); print(html)
Bernardo Alvez da Cruz (IESTA – UDELAR) Interfases con R 1 de junio de 2009 5 / 24
8. Conexiones
El Proyecto Omegahat
Es un proyecto iniciado en 1998 que agrupa una variedad de software libre de
aplicaci´n estad´
o ıstica.
Muchos paquetes est´n abandonados y/o desactualizados.
a
Paquetes disponibles
Interfases con lenguajes de programaci´n:
o
Perl: RSPerl
Python: RSPython
Java: RSJava
Matlab: RMatlab
Plug-in’s:
Gnumeric: RGnumeric
Netscape: SNetscape
Bernardo Alvez da Cruz (IESTA – UDELAR) Interfases con R 1 de junio de 2009 6 / 24
9. Interfases de red
Sockets
Qu´ son?
e
La interfaz socket fue desarrollada como parte del S.O BSD y puede verse como el
punto final de una comunicaci´n bidireccional entre dos m´quinas o entre
o a
procesos de una m´quina.
a
Un socket queda definido por una direcci´n IP, un Puerto y por un Protocolo.
o
Uso de sockets
Escribir programas cliente/servidor entre diferentes m´quinas
a
(Windows/Unix, Mac/Linux, etc)
Realizar estudios estad´
ısticos utilizando m´todo Monte Carlo
e
Ejecutar una gran cantidad de tests en paralelo
Bernardo Alvez da Cruz (IESTA – UDELAR) Interfases con R 1 de junio de 2009 7 / 24
10. Interfases de red
Sockets
Qu´ son?
e
La interfaz socket fue desarrollada como parte del S.O BSD y puede verse como el
punto final de una comunicaci´n bidireccional entre dos m´quinas o entre
o a
procesos de una m´quina.
a
Un socket queda definido por una direcci´n IP, un Puerto y por un Protocolo.
o
Uso de sockets
Escribir programas cliente/servidor entre diferentes m´quinas
a
(Windows/Unix, Mac/Linux, etc)
Realizar estudios estad´
ısticos utilizando m´todo Monte Carlo
e
Ejecutar una gran cantidad de tests en paralelo
Bernardo Alvez da Cruz (IESTA – UDELAR) Interfases con R 1 de junio de 2009 7 / 24
11. Interfases de red
Sockets
Qu´ son?
e
La interfaz socket fue desarrollada como parte del S.O BSD y puede verse como el
punto final de una comunicaci´n bidireccional entre dos m´quinas o entre
o a
procesos de una m´quina.
a
Un socket queda definido por una direcci´n IP, un Puerto y por un Protocolo.
o
Uso de sockets
Escribir programas cliente/servidor entre diferentes m´quinas
a
(Windows/Unix, Mac/Linux, etc)
Realizar estudios estad´
ısticos utilizando m´todo Monte Carlo
e
Ejecutar una gran cantidad de tests en paralelo
Bernardo Alvez da Cruz (IESTA – UDELAR) Interfases con R 1 de junio de 2009 7 / 24
12. Interfases de red
Sockets (cont.)
Ejemplo
Estando en Montevideo, deseamos obtener n´meros pseudo–aleatorios generados
u
por un servidor localizado en Cerrillada, Rivera.
El sistema R env´ un “mensaje” con la distribuci´n, sus par´metros y la cantidad
ıa o a
de n´meros aleatorios al servidor.
u
El servidor obtiene un n´mero y se lo devuelve.
u
Nota: el servidor puede o bien un sistema R remoto o bien un servidor dedicado.
Bernardo Alvez da Cruz (IESTA – UDELAR) Interfases con R 1 de junio de 2009 8 / 24
13. Interfases de red
Caso 1 - Comunicaci´n v´ sockets (bajo nivel)
o ıa
Paquete: utils
Funciones: make.socket, read.socket, write.socket, close.socket
Demo: Random Server
Bernardo Alvez da Cruz (IESTA – UDELAR) Interfases con R 1 de junio de 2009 9 / 24
14. Interfases de red
Caso 1 - Comunicaci´n v´ sockets (bajo nivel)
o ıa
Cliente
Servidor
Bernardo Alvez da Cruz (IESTA – UDELAR) Interfases con R 1 de junio de 2009 10 / 24
15. Interfases de red
Caso 1 - Comunicaci´n v´ sockets (bajo nivel)
o ıa
Resumen
1 Se crea el socket, server=TRUE
2 Se leen del socket 2048 bytes y se guarda en la variable request
3 Se procesa la solicitud, se obtienen los valores aleatorios y se escribe en el
socket la respuesta (“send”)
4 Se cierra el socket y se baja el servidor en caso de recibir un exit
Bernardo Alvez da Cruz (IESTA – UDELAR) Interfases con R 1 de junio de 2009 11 / 24
16. Interfases de red
Caso 2 - paquete Rserve
Paquete Rserve
Rserve es un servidor TCP/IP que permite a otros programas utilizar las
funcionalidades de R (v´ sockets).
ıa
Descarga: http://www.rforge.net/Rserve/files/
Requisitos: R-1.5.0 o superior
Caracter´
ısticas
Espacio y directorio de trabajo independiente por conexi´n
o
Implementaciones de clientes disponibles en C/C++ y Java
Soporta conexiones remotas, autenticaci´n y transferencia de archivos
o
´ cuando queremos integrar en aplicaciones c´lculos estad´
Util a ısticos, gr´ficos,
a
etc con R de fondo
Bernardo Alvez da Cruz (IESTA – UDELAR) Interfases con R 1 de junio de 2009 12 / 24
17. Interfases de red
Caso 2: paquete Rserve
Instalaci´n, inicio y uso
o
> i n s t a l l . p a ck a g e s ( ” R s e r v e ” ) # R CMD INSTALL R s e r v e 0.6 −0. t a r . gz
> l i b r a r y ( Rserve )
> Rserve ()
S t a r t i n g R s e r v e on p o r t 6 3 1 1 :
Listado 1: Random Server (Java)
p u b l i c s t a t i c v o i d getRandomNumbers ( ) {
try {
R C o n n e c t i o n c = new R C o n n e c t i o n ( ) ;
S t r i n g fun = ” r u n i f (10 ,0 ,30) ” ;
d o u b l e [ ] d= c . e v a l ( f u n ) . a s D o u b l e s ( ) ;
f o r ( i n t i =0; i < d . l e n g t h ; i ++) {
System . o u t . p r i n t l n ( ” ” + d[ i ]);
}
} c a t c h ( E x c e p t i o n e ){
e . printStackTrace () ;
}
}
Bernardo Alvez da Cruz (IESTA – UDELAR) Interfases con R 1 de junio de 2009 13 / 24
18. Interfases de red
Otras interfases de red
download.file: permite leer desde una url (http o https) y grabar en un
archivo el contenido
DCOM: es un protocolo de Windows para comunicaci´n entre diferentes
o
programas
CORBA (Common Object Request Broker Architecture): similar a DCOM,
permite a otras aplicaciones llamar a funciones, operaciones que est´n
a
ubicados en un servidor de objetos.
Bernardo Alvez da Cruz (IESTA – UDELAR) Interfases con R 1 de junio de 2009 14 / 24
19. 1 Introducci´n
o
2 Conexiones e interfases de red
Conexiones
Archivos de texto
El Proyecto Omegahat
Interfases de red
Sockets
3 R & bases de datos
Interfases simples
Hojas de c´lculo
a
Otros formatos
Interfases avanzadas
ODBC y RODBC
Bernardo Alvez da Cruz (IESTA – UDELAR) Interfases con R 1 de junio de 2009 15 / 24
20. Hojas de c´lculo
a
Importaci´n
o
En Windows:
RODBC
library(RODBC); con = odbcConnectExcel(’C:datos.xls’)
gdata (multiplataforma, convierte a csv previa importaci´n)
o
library(gdata); data = read.xls(’C:datos.xls’, sheet=1,perl=“perl”)
xlsReadWrite
En Linux:
gdata (idem anterior)
xls → csv → R
Exportaci´n a excel/plugins
o
Exportar datos de R a Excel, paquetes: dataframes2xls, WriteXLS
(Excel 2003)
Plugins para manejo de funciones de R desde Excel o Gnumeric: RExcel,
RGnumeric, etc.
Bernardo Alvez da Cruz (IESTA – UDELAR) Interfases con R 1 de junio de 2009 16 / 24
21. Otros formatos
Paquete foreign
Sistema Leer Escribir
SAS read.xport
SPSS read.spss write.spss
Stata read.dta write.dta
S-Plus read.S write.S
FoxPro, DBase (DBF) read.dbf write.dbf
EpiInfo (.REC) read.epinfo
En Windows puede utilizarse el paquete RODBC para leer/escribir en archivos DBF.
Bernardo Alvez da Cruz (IESTA – UDELAR) Interfases con R 1 de junio de 2009 17 / 24
22. Interfaz ODBC para acceso a bases de datos
ODBC (Open DataBase Conectivity)
Es un est´ndar de acceso a bases de datos sin importar el DBMS (DataBase
a
Management System) que almacena los datos.
Esto brinda independencia de lenguajes de programaci´n, bases de datos y
o
sistemas operativos.
Existen ODBC para muchos sistemas de bases de datos:
Oracle (Oracle Inc.), SQL Server, Access (Microsoft), MySQL (Sun
Microsystems), PostgreSQL (open source)
Bernardo Alvez da Cruz (IESTA – UDELAR) Interfases con R 1 de junio de 2009 18 / 24
23. ODBC: componentes
Componentes
Una aplicaci´n compatible con
o
ODBC (aplicaci´n que utiliza la
o
interfaz ODBC para
comunicarse con un DBMS)
ODBC Driver Manager, es el
puente entre la aplicaci´n
o
ODBC y el driver ODBC
Repositorio con drivers ODBC
instalados
Driver ODBC, el cual traduce
las llamadas de la API ODBC en
sentencias que entiende el
DBMS
Bernardo Alvez da Cruz (IESTA – UDELAR) Interfases con R 1 de junio de 2009 19 / 24
24. C´mo utilizar ODBC
o
1 Abrir conexi´n con la base de datos.
o
Para ello es necesario crear un DSN (Data Source Name).
Existen dos tipos de DSN:
User DSN (DSN de usuario): accesible solamente por el usuario que lo cre´
o
System DSN (DSN del sistema): accesible por cualquier usuario
Ejemplo:
"DSN=DSNMysql, UID=usuario, PWD=1234"
2 Enviar la consulta
3 Procesar el resultado
4 Cerrar la conexi´n con la base de datos
o
Bernardo Alvez da Cruz (IESTA – UDELAR) Interfases con R 1 de junio de 2009 20 / 24
25. Paquete RODBC
RODBC
RODBC provee una interfaz a fuentes de datos que soportan ODBC.
Esto permite que un mismo c´digo R pueda acceder a diferentes bases de datos, y
o
al ser ODBC un sistema cliente–servidor podemos estar conectados a un DBMS
corriendo en un sistema Linux desde un cliente Windows.
RODBC provee dos grupos de comandos: odbc* de m´s bajo nivel y sql* de
a
m´s alto nivel.
a
hasta 16 conexiones a la vez y hacia cualquier combinaci´n de hosts/dsn.
o
Puede utilizarse RODBC para importar datos de Excel v´ el driver ODBC
ıa
para Excel, sin embargo, tenemos que ajustarnos a ciertos requisitos que debe
cumplir la planilla.
Bernardo Alvez da Cruz (IESTA – UDELAR) Interfases con R 1 de junio de 2009 21 / 24
26. Paquete RODBC
Funciones
Las funciones b´sicas que vamos a manejar son las siguientes:
a
Establecimiento de conexiones a bases de datos ODBC:
odbcConnect, odbcConnectAccess, odbcConnectDbase,
odbcConnectExcel
Listado de tablas: sqlTables
Lectura de una tabla: sqlFetch
Consultas a tablas y recuperaci´n de resultados: sqlQuery
o
Observaciones
Gran cantidad de datos (archivos/bases de datos) pueden ser un problema ya
que R almacena los objetos en memoria y, por lo tanto, se pueden estar
generando muchas copias de los mismos al ejecutar una funci´n.
o
Esto provoca que R se quede sin memoria y crash!.
Datos > 100 MB pueden causar el comportamiento anterior.
Bernardo Alvez da Cruz (IESTA – UDELAR) Interfases con R 1 de junio de 2009 22 / 24
27. Bibliograf´
ıa
Phil Spector , Data Manipulation with R. Springer, 2008.
CRAN , http://cran.r-project.org/
Venables, Bill , An introduction to R: software for statistical modelling and
computing, course notes (http://www.csiro.au/files/files/pi7c.pdf)
Bernardo Alvez da Cruz (IESTA – UDELAR) Interfases con R 1 de junio de 2009 23 / 24
28. Fin
Muchas gracias.
Bernardo Alvez da Cruz (IESTA – UDELAR) Interfases con R 1 de junio de 2009 24 / 24