Inicio Inicio
Inicio Mapa del sitio <-

El lenguaje R



Introducción
Instalación e interfaz inicial
RStudio
R Commander
Rattle
RKWard
Deducer
Apéndices
      Documentación y enlaces
      Linux (Linux): distribución Debian



Introducción

R es un sistema para análisis estadísticos y gráficos creado por Ross Ihaka y Robert Gentleman. R tiene una naturaleza doble de programa y lenguaje de programación y es considerado como un dialecto del lenguaje S creado por los Laboratorios AT&T Bell.

R se distribuye gratuitamente bajo los términos de la GNU General Public Licence; su desarrollo y distribución son llevados a cabo por varios estadísticos conocidos como el Grupo Nuclear de Desarrollo de R.

R está disponible en varias formas: el código fuente está escrito principalmente en C (y algunas rutinas en Fortran), esencialmente para máquinas Unix y Linux, o como archivos binarios precompilados para Windows, Linux (Debian, Mandrake, RedHat, SuSe), Macintosh y Alpha Unix.

Los archivos necesarios para instalar R, ya sea desde las fuentes o binarios precompilados, se distribuyen desde el sitio de internet Comprehensive R Archive Network (CRAN) junto con las instrucciones de instalación. Para las diferentes distribuciones de Linux, los binarios están disponibles generalmente para las versiones más actualizadas de éstas y de R; visite el sitio CRAN si es necesario.

R posee muchas funciones para análisis estadísticos y gráficos; estos últimos pueden ser visualizados de manera inmediata en su propia ventana y ser guardados en varios formatos (jpg, png, bmp, ps, pdf, emf, pictex, xfig; los formatos disponibles dependen del sistema operativo). Los resultados de análisis estadísticos se muestran en la pantalla, y algunos resultados intermedios (como valores P-, coeficientes de regresión, residuales,...) se pueden guardar, exportar a un archivo, o ser utilizados en análisis posteriores.

El lenguaje R permite al usuario, por ejemplo, programar bucles («loops» en inglés) para analizar conjuntos sucesivos de datos. También es posible combinar en un solo programa diferentes funciones estadísticas para realizar análisis más complejos. Usuarios de R tienen a su disponibilidad un gran número de programas escritos para S y disponibles en la red; la mayoría de estos pueden ser utilizados directamente con R.

Al principio, R puede parecer demasiado complejo para el no especialista. Esto no es cierto necesariamente. De hecho, una de las características más sobresalientes de R es su enorme flexibilidad. Mientras que programas más clásicos muestran directamente los resultados de un análisis, R guarda estos resultados como un «objeto», de tal manera que se puede hacer un análisis sin necesidad de mostrar su resultado inmediatamente. Esto puede ser un poco extraño para el usuario, pero esta característica suele ser muy útil. De hecho, el usuario puede extraer solo aquella parte de los resultados que le interesa.

R es un lenguaje orientado a objetos: bajo este complejo término se esconde la simplicidad y flexibilidad de R. El hecho que R es un lenguaje de programación puede desaminar a muchos usuarios que piensan que no tienen «alma de programadores». Esto no es necesariamente cierto por dos razones. Primero R es un lenguaje interpretado (como Java) y no compilado (como C, C++, Fortran, Pascal,...), lo cual significa que los comandos escritos en el teclado son ejecutados directamente sin necesidad de construir ejecutables.


Emmanuel Paradis, Jorge A. Ahumada (trad.)
R para Principiantes
http://cran.r-project.org/doc/contrib/rdebuts_es.pdf .pdf


Arriba


Instalación e interfaz inicial

Es necesario descargar el archivo de instalación o el código que corresponda al sistema operativo del ordenador desde la URL

http://www.r-project.org

Para Windows (Windows) se descarga un archivo de instalación como para cualquier otro programa. Para Linux (Linux) se puede descargar el código fuente o, si este lenguaje está ya compilado, se pueden utilizar las herramientas para gestionar paquetes que tenga la distribución concreta. En los apéndices se incluyen algunos enlaces sobre la instalación y se explica cómo hacerla en algunas distribuciones.
La consola de comandos de Windows (Windows) tiene el siguientes aspecto:

Consola de R en Windows

En las distribuciones de Linux (Linux) no suele venir instalada ninguna interfaz gráfica, y para utilizar el programa basta abrir una consola y escribir:
R
lo que hace aparecer

Consola de R en Linux

En los apéndices se incluyen algunas referencias para aprender la sintaxis básica de R. Además de utilizar R introduciendo directamente el código en la ventana de comando, hay una forma cómoda de ir evaluando —y guardando, si se desea— el código de R que tengamos escrito. Basta dividir la ventana principal de R en dos partes: en una estará el código que vamos escribiendo, desde la que será enviado a la otra para que se evalúe. Para ello hay que hacer que la ventana de comandos ocupe una mitad, y la ventana de editar código la otra. En Windows (Windows):

Interfaz de R con una subventana

La subventana para editar código aparece al entrar en el menú

Archivo -> Nuevo script

si el código no está guardado en ningún archivo, o
Archivo -> Abrir script...

si ya lo está.

Interfaz de R con las dos subventanas


Ahora, para evaluar una parte del código, basta seleccionarla y pulsar

Ctrl+R

o, menos cómodo, entrar en el menú
Editar -> Correr línea o selección.

Para evaluar todo el código del archivo, se puede entrar en el menú

Editar -> Ejecutar todo,

o seleccionarlo todo y utilizar la forma anterior. Ésta es una forma que vale tanto para cuando tenemos el código guardado en un archivo como para cuando no, cosa que no sucede si desde la ventana de comandos llamamos a source("archivo.R"), que evaluará todo el código previamente guardado en ese archivo.

Algo parecido se puede hacer en Linux (Linux) si tienes instalado el potentísimo editor de texto GNU Emacs (menos freír huevos debe de hacer de todo). La comodidad de su uso reside en que puedes dividir su ventana en dos partes (o las que quieras) y tener abierto el archivo de R en una y una sesión de consola del sistema operativo en otra subventana del programa. Ahora abre GNU Emacs. Si la ventana no está dividida en dos, se divide en dos cada vez que haces:
Mantener Ctrl pulsada mientras presionas la tecla x, suelta las dos y pulsa la tecla del 2
En la ventana de arriba, por ejemplo, abre el archivo de texto. En la de abajo, sitúa el cursor (con el ratón o haciendo del mismo modo Ctrl + x y luego la letra o) y para iniciar una sesión de consola haz:
Mantener Alt pulsada mientras presionas la tecla x, suelta las dos y escribe (el cursor se pone abajo del todo) shell y pulsa la tecla Intro/Enter
Ya tienes tu consola y tu archivo, que puedes ir modificando y compilando a la vez.

Interfaz de Emacs

¡Maravilloso! Es maravilloso... Si quieres aprender algo más sobre el manejo de GNU Emacs con las teclas (aunque tiene también menús, al final es más rápido utilizarlas):
Una introducción rápida a GNU Emacs: .pdf
Brevísima introducción a Emacs: .pdf
Emacs Command Reference: .pdf
La anterior forma de utilizar R con GNU Emacs no es más que aprovechar las comodidades de este editor de texto para abrir el archivo con el código en una de sus subventanas y una consola en otra. Algo mucho más cómodo e integrado es lo que hace Emacs Speaks Statistics (ESS), que hace que aparezca un menú nuevo en el editor de texto y permite enviar directamente parte o todo el código de su subventana a otra donde el editor abre una sesión de R.


Arriba


RStudio

Si además del entorno de línea de comandos se desea tener un entorno gráfico, el programa RStudio es uno de los que lo proporciona (WindowsLinuxMac). Para instalarlo es necesario antes instalado el programa básico, y luego descargarlo del sitio http://www.studio.org/. En mi caso, Linux (Linux), ha sido suficiente descargarlo, ir a la carpeta y ejecutar el comando:
dpkg -i rstudio(restodelnombre).deb
La interfaz gráfica es la siguiente:

Interfaz de RStudio

Arriba


R Commander

El paquete Rcmdr también proporciona otro entorno gráfico. Para instalar un paquete, la versión para Windows (Windows) tiene integrado un gestor de paquetes:
  1. Entrar en el menú Paquetes -> Instalar paquete(s)...
  2. En la ventana que aparece, elegir un repositorio (o espejo) desde el que descargar el paquete. Cuanto más cercano esté, mejor.
  3. Elegir el nombre del paquete que se quiere instalar, en este caso Rcmdr.
En el caso de este paquete se van a instalar muchos otros paquetes (dependencias), que son necesarios para que puedan funcionar todas las opciones de los menús del entorno gráfico.

Cada vez que se quiera abrir el R Commander hay que teclear library(Rcmdr) en la consola de comandos, o entrar en el menú Paquetes -> Cargar paquete... y seleccionar Rcmd en la ventana que aparece.

Cualquier paquete de R puede instalarse con comandos, tanto en Windows (Windows) como en Linux (Linux). Hay que ejecutar
install.packages("Rcmdr")
O durante la instalación o la primera vez que lo abres, se piden otros posibles paquetes necesarios (si el usuario no los tiene). La interfaz gráfica es la siguiente:

Interfaz de R Commander

Esta interfaz gráfica puede ser ampliada, hay más de treinta paquetes de R creados para hacerlo.

Arriba


Rattle

Este paquete implementa otra interfaz gráfica alternativa al uso de comandos. Para instalarlo en Windows (Windows) supongo que será suficiente hacer lo que para R Commander. Otra forma de instalarlo, tanto en Windows (Windows) como en Linux (Linux), sería ejecutando (sin mayúscula inicial)
install.packages("rattle")
En Linux (Linux) puede ser necesario hacer algo más previamente, véase el enlace que se da en el primer apéndice.

Arriba


RKWard

Este paquete implementa también una interfaz gráfica alternativa al uso de comandos. Para instalarlo, en este caso es necesario descargar el archivo ejecutable para de Windows (Windows) o la carpeta comprimida para Linux (Linux). Véase el enlace que se da en el primer apéndice.

Arriba


Deducer

Por último, este paquete implementa otra interfaz gráfica más. Para instalarlo en Windows (Windows) y en Linux (Linux) desde la consola de R con el comando install.packages(), véase el enlace que se da en el primer apéndice.

Arriba


Apéndices


Documentación y enlaces



Linux (Linux): distribución Debian

Para Linux, y como ejemplo de lo potente y cómodo (además de económico: está disponible de forma gratuita) que puede llegar a ser este sistema operativo, veamos cómo se harían algunos pasos en la distribución Debian (y las que se construyen sobre ella). Ésta no es quizá la mejor distribución para iniciarse en Linux, aunque es una de las más fiables y más fieles a la filosofía del código libre; sin embargo, hay varias distribuciones más fáciles de utilizar al principio (con muchos programas y controladores ya instalados): Knoppix, Ubuntu y Xubuntu, a su vez basada en Ubuntu; esta última es la que mejores resultados me ha dado últimamente. Hay tres comandos básicos para gestionar paquetes de código. Cuando descargas un paquete (extensión .deb para estas distribuciones) de un sitio de confianza y quieres instalarlo, se utiliza el comando dpkg; el comando apt busca, actualiza, descarga o instala paquetes a partir de los repositorios indicados en el archivo /etc/apt/sources.list; finalmente, aptitude es una interfaz para apt y synaptic es también una interfaz para gestionar paquetes. Otras distribuciones de Linux tienen comandos igual de cómodos que estos de Debian. (Tarjeta de referencia para Debian GNU/Linux: .pdf.) Para instalar el lenguaje R basta con teclear en una consola, como superusuario (root):
apt-get install r-base
Después de la instalación de este paquete, ya puedes utilizar R. Sólo tienes que abrir una sesión en la consola (ya no hace falta que lo hagas como superusuario):
R
Es aconsejable instalar, junto con el paquete básico, los dos paquetes
apt-get install r-recommended r-base-dev
Si la consola no te satisface del todo y quieres más potencia y comodidad, puedes utilizar el editor de texto GNU Emacs. Si tienes que instalarlo, puedes hacer (como superusuario):
apt-get install emacs
Ahora, para instalar Emacs Speaks Statistics habría que hacer
apt-get install ees
Por último, hay muchos paquetes relacionados con este lenguaje de programación; haciendo una búsqueda con
apt-cache search 'GNU R'
éstos son algunos que pueden resultar interesantes
libstatistics-r-perl - Control the R interpreter with perl
littler - GNU R scripting and command-line front-end
r-base - GNU R statistical computation and graphics system
r-base-core - GNU R core of statistical computation and graphics system
r-base-core-dbg - GNU R debug symbols for statistical comp. language and environment
r-base-dev - GNU R installation of auxiliary GNU R packages
r-base-html - GNU R html docs for statistical computing system functions
r-bioc-hilbertvis - GNU R package to visualise long vector data
r-cran-abind - GNU R abind multi-dimensional array combination function
r-cran-amelia - GNU R package supporting multiple imputation of missing data
r-cran-amore - GNU R: A MORE flexible neural network package
r-cran-bayesm - GNU R package for Bayesian inference
r-cran-bitops - GNU R package implementing bitwise operations
r-cran-cairodevice - GNU R Cairo/Gtk2 device driver package
r-cran-car - GNU R Companion to Applied Regression by John Fox
r-cran-catools - GNU R package providing various utility functions
r-cran-chron - GNU R package for chronologically ordered objects
r-cran-class - GNU R package for classification
r-cran-cluster - GNU R package for cluster analysis by Rousseeuw et al
r-cran-codetools - GNU R package providing code analysis tools
r-cran-colorspace - GNU R Color Space Manipulation
r-cran-combinat - GNU R package with utilities for combinatorics
r-cran-date - GNU R package for date handling
r-cran-dbi - GNU R package providing a generic database interface
r-cran-diagnosismed - medical diagnostic test accuracy analysis toolkit
r-cran-domc - GNU R parallel excution backend for %dopar% using multicore
r-cran-dosnow - GNU R parallel excution backend for %dopar% using snow
r-cran-eco - GNU R routines for Bayesian ecological inference
r-cran-effects - GNU R graphical and tabular effects display for glm models
r-cran-epi - GNU R epidemiological analysis
r-cran-epicalc - GNU R Epidemiological calculator
r-cran-epir - GNU R Functions for analysing epidemiological data
r-cran-epitools - GNU R Epidemiology Tools for Data and Graphics
r-cran-erm - GNU R package for 'extended Rasch modelling'
r-cran-evd - GNU R Functions for extreme value distributions
r-cran-fasianoptions - GNU R package for financial engineering -- fAsianOptions
r-cran-fassets - GNU R package for financial engineering -- fAssets
r-cran-fbasics - GNU R package for financial engineering -- fBasics
r-cran-fbonds - GNU R package for financial engineering -- fBonds
r-cran-fcopulae - GNU R package for financial engineering -- fCopulae
r-cran-fecofin - GNU R package for financial engineering -- fEcofin
r-cran-fexoticoptions - GNU R package for financial engineering -- fExoticOptions
r-cran-fextremes - GNU R package for financial engineering -- fExtremes
r-cran-fgarch - GNU R package for financial engineering -- fGarch
r-cran-fimport - GNU R package for financial engineering -- fImport
r-cran-fmultivar - GNU R package for financial engineering -- fMultivar
r-cran-fnonlinear - GNU R package for financial engineering -- fNonlinear
r-cran-foptions - GNU R package for financial engineering -- fOptions
r-cran-foreach - GNU R foreach looping support
r-cran-foreign - GNU R package to read/write data from other stat. systems
r-cran-fportfolio - GNU R package for financial engineering -- fPortfolio
r-cran-fregression - GNU R package for financial engineering -- fRegression
r-cran-ftrading - GNU R package for financial engineering -- fTrading
r-cran-funitroots - GNU R package for financial engineering -- fUnitRoots
r-cran-g.data - GNU R package for delayed-data
r-cran-genabel - GNU R package for genome-wide SNP association analysis
r-cran-getopt - GNU R package providing command-line parsing functionality
r-cran-gmaps - GNU R support for producing geographic maps with grid graphics
r-cran-gregmisc - GNU R package with miscellaneous functions by Greg Warnes et al
r-cran-haplo.stats - GNU R package for haplotype analysis
r-cran-hdf5 - GNU R package interfacing the NCSA HDF5 library
r-cran-hmisc - GNU R miscellaneous functions by Frank Harrell
r-cran-inline - GNU R package to inline C, C++, Fortran functions from R
r-cran-int64 - GNU R package 64 bit integer types
r-cran-iterators - GNU R iterator support for vectos, lists and other containers
r-cran-its - GNU R package for handling irregular time series
r-cran-lattice - GNU R package for 'Trellis' graphics
r-cran-latticeextra - GNU R package of additional graphical displays based on lattice
r-cran-lme4 - GNU R package for linear mixed effects model fitting
r-cran-lmtest - GNU R package for diagnostic checking in linear models
r-cran-lpsolve - GNU R package providing linear program solvers
r-cran-mapdata - GNU R support for producing geographic maps (supplemental data)
r-cran-maps - GNU R support for producing geographic maps
r-cran-mass - GNU R package of Venables and Ripley's MASS
r-cran-matchit - GNU R package of nonparametric matching methods
r-cran-matrix - GNU R package of classes for dense and sparse matrices
r-cran-mcmcpack - R routines for Markov chain Monte Carlo model estimation
r-cran-medadherence - GNU R Medication Adherence: Commonly Used Definitions
r-cran-mgcv - GNU R package for multiple parameter smoothing estimation
r-cran-misc3d - GNU R collection of 3d plot functions and rgl-based isosurfaces
r-cran-mnormt - GNU R package providing multivariate normal and t distribution
r-cran-mnp - GNU R package for fitting multinomial probit (MNP) models
r-cran-msm - GNU R Multi-state Markov and hidden Markov models in continuous time
r-cran-multcomp - GNU R package for multiple comparison procedures
r-cran-multicore - GNU R parallel processing on multi-core or multi-cpu machines
r-cran-mvtnorm - GNU R package to compute multivariate Normal and T distributions
r-cran-nlme - GNU R package for (non-)linear mixed effects models
r-cran-nnet - GNU R package for feed-forward neural networks
r-cran-nws - GNU R package for distributed programming via NetWorkSpaces
r-cran-plotrix - GNU R package providing various plotting functions
r-cran-polspline - GNU R package providing polynomial spline fitting
r-cran-psy - GNU R procedures for psychometrics
r-cran-qtl - GNU R package for genetic marker linkage analysis
r-cran-quadprog - GNU R package for solving quadratic programming problems
r-cran-qvalue - GNU R package for Q-value estimation for FDR control
r-cran-raschsampler - GNU R package for sampling binary matrices with fixed margins
r-cran-rcmdr - GNU R platform-independent basic-statistics GUI
r-cran-rcolorbrewer - GNU R package providing suitable color palettes
r-cran-rcpp - GNU R package for Seamless R and C++ Integration
r-cran-relimp - GNU R package for inference on relative importance of regressors
r-cran-rggobi - GNU R package for the GGobi data visualization system
r-cran-rgl - GNU R package for three-dimensional visualisation using OpenGL
r-cran-rglpk - GNU R interface to the GNU Linear Programing Kit
r-cran-rgtk2 - GNU R binding for Gtk2
r-cran-rjava - GNU R low-level interface to Java
r-cran-rmpi - GNU R package interfacing MPI libraries for distributed computing
r-cran-rms - GNU R regression modeling strategies by Frank Harrell
r-cran-rmysql - GNU R package providing a DBI-compliant interface to MySQL
r-cran-robustbase - GNU R package providing basic robust statistics
r-cran-rocr - GNU R package to prepare and display ROC curves
r-cran-rodbc - GNU R package for ODBC database access
r-cran-rpart - GNU R package for recursive partitioning and regression trees
r-cran-rpvm - GNU R package interfacing PVM libraries for distributed computing
r-cran-rquantlib - GNU R package interfacing the QuantLib finance library
r-cran-rsprng - GNU R interface to SPRNG (Scalable Parallel RNGs)
r-cran-rsymphony - GNU R interface to the SYMPHONY MILP solver
r-cran-runit - GNU R package providing unit testing framework
r-cran-sandwich - GNU R package for model-robust standard error estimates
r-cran-scatterplot3d - GNU R package for Visualizing Multivariate Data
r-cran-slam - GNU R sparse lighweight arrays and matrices package
r-cran-sm - GNU R package for kernel smoothing methods
r-cran-sn - GNU R package providing skew-normal and skew-t distributions
r-cran-snow - GNU R package for 'simple network of workstations'
r-cran-sp - GNU R classes and methods for spatial data
r-cran-spatial - GNU R package for spatial statistics
r-cran-spc - GNU R Statistical Process Control
r-cran-stabledist - GNU R package for stable distribution functions
r-cran-strucchange - GNU R package for structural change regression estimation
r-cran-survival - GNU R package for survival analysis
r-cran-teachingdemos - GNU R Demonstrations for teaching and learning
r-cran-timedate - GNU R package for financial engineering -- timeDate
r-cran-timeseries - GNU R package for financial engineering -- timeSeries
r-cran-tkrplot - GNU R embedded Tk plotting device package
r-cran-tseries - GNU R package for time-series analysis and comp. finance
r-cran-urca - GNU R package providing unit root and cointegration tests
r-cran-vcd - GNU R Visualizing Categorical Data
r-cran-vgam - GNU R package for estimating vector generalized additive models
r-cran-xml - GNU R package for XML parsing and generation
r-cran-xtable - GNU R coerce data to LaTeX and HTML tables
r-cran-zelig - GNU R package providing a unified front-end for estimating statistical models
r-cran-xml - GNU R package for XML parsing and generation
r-cran-xtable - GNU R coerce data to LaTeX and HTML tables
r-cran-zelig - GNU R package providing a unified front-end for estimating statistical models
r-cran-zoo - GNU R package for totally ordered indexed observations
r-doc-html - GNU R html manuals for statistical computing system
r-doc-info - GNU R info manuals statistical computing system
r-doc-pdf - GNU R pdf manuals for statistical computing system
r-mathlib - GNU R standalone mathematics library
r-noncran-lindsey - GNU R libraries contributed by Jim and Patrick Lindsey
r-other-bio3d - GNU R package for biological structure analysis
r-other-mott-happy - GNU R package for fine-mapping complex diseases
r-recommended - GNU R collection of recommended packages [metapackage]
python-rpy - Python interface to the GNU R language and environment
python-rpy-doc - Python interface to the GNU R language (documentation package)
r-cran-boot - GNU R package for bootstrapping functions from Davison and Hinkley
r-cran-epibasix - GNU R Elementary Epidemiological Functions
r-cran-gdata - GNU R package with data manipulation tools by Greg Warnes et al
r-cran-genetics - GNU R package for population genetics
r-cran-gplots - GNU R package with tools for plotting data by Greg Warnes et al
r-cran-gtools - GNU R package with R programming tools by Greg Warnes et al
r-cran-kernsmooth - GNU R package for kernel smoothing and density estimation
r-cran-mapproj - Soporte GNU R para las proyecciones cartográficas de datos de mapa
r-cran-randomforest - Paquete GNU R que implementa el clasificador aleatorio «forest»
r-cran-rserve - GNU R Rserve tcp/ip server and sample clients rkward - KDE frontend to the R statistics language
(Agradezco desde aquí su trabajo desinteresado a quienes los hacen posibles, que además no creo que sean, en general, personas que ocupen puestos importantes en empresas, centros de investigación y universidades: ¡Muchas gracias!) Para instalar cualquiera de ellos desde la consola, basta abrir una (como superusuario) y escribir la línea
apt-get install nombrepaquete
Y si no te gusta, para desinstalarlo sólo tienes que madrugar mucho al día siguiente (Guiño, después de las cinco de la madrugada deja de funcionar el comando) y escribir en la consola (como superusuario)
apt-get remove nombrepaquete

Arriba   Inicio


David Casado de Lucas

Última actualización: Marzo de 2014

HTML válido CSS válidas Logotipo de Linux