Instalación de dos versiones de R y como elegir la versión en RStudio usando linux

¿Por qué dos versiones de R?, pues hay mil razones pero a veces un paquete que usas con regularidad no rula con la versión última de R así que quisieras trabajar con otra versión anterior. Otros supuestos es por ejemplo cuando das clase en un aula con una versión anterior y quieres ver que tus scripts funcionan correctamente en la versión del aula. Este problema usando windows está resuelto   (me refiero a que es trivial) aquí explico como lo he resuelto yo para Ubuntu.

Si instalas R de forma usual (con un gestor de paquetes, se instala en “/usr/lib/R” (ejecuta which R). De esta forma meterá el script “R” en /usr/bin/ de modo que al estar esta ruta en el $PATH se ejecuta simplemente poniendo R en la consola…

sudo aptitude update
sudo aptitude install r-base

Para una instalación más fina mirar este enlace

Si quiero lanzar RStudio con otra versión de R deberé de, primero obviamente tener otra versión instalada y después cambiar el path que mira RStudio para que no lance por defecto la versión más nueva. Nosotros lo vamos a hacer pero creando dos ficheros en usr/lib llamados R13 y R15 respectivamente, de modo que si sustituyo el fichero R por cualquiera de ellos arrancará por defecto la versión concreta.

Instalación de R desde las fuentes (teniendo o no teniendo otra versión ya instalada).

  • Descargo la versión que desee instalar desde “Source code of older versions of R is available here”
  • Desempaqueto la versión que sea.. la 2.13, voy a ese directorio
    $ cd /home/olivo/Descargas/R-2.13.2
    
  • Creo un directorio donde instalar la nueva versión
    $ sudo mkdir /usr/local/R2.13
    

    Ejecuto configure con la opción prefix para indicar la ruta donde queremos instalarlo, la versión 2.15 está en /usr/lib/R , así que ahora instalaremos en /usr/local/R2.13. También es fundamental la opción --enable-R-shlib para el configure.

    $ ./configure --prefix=/usr/local/R2.13  --enable-R-shlib
    

    Si no ponemos la opción --enable-R-shlib nos dará problema RStudio: R shared library (/usr/local/R2.13/lib/R/lib/libR.so) not found. If this is a custom build of R, was it built with the --enable-R-shlib option?.

    Salida:

    $ ./configure --prefix=/usr/local/R2.13  --enable-R-shlib
    ....
    R is now configured for i686-pc-linux-gnu
      Source directory:          .
      Installation directory:    /usr/local/R2.13
      C compiler:                gcc -std=gnu99  -g -O2
      Fortran 77 compiler:       gfortran  -g -O2
      C++ compiler:              g++  -g -O2
      Fortran 90/95 compiler:    gfortran -g -O2
      Obj-C compiler:
      Interfaces supported:      X11
      External libraries:        readline, ICU
      Additional capabilities:   PNG, JPEG, NLS
      Options enabled:           shared BLAS, R profiling, Java
      Recommended packages:      yes
    configure: WARNING: you cannot build DVI versions of the R manuals
    configure: WARNING: you cannot build DVI versions of all the help pages
    configure: WARNING: you cannot build info or HTML versions of the R manuals
    configure: WARNING: you cannot build PDF versions of the R manuals
    configure: WARNING: you cannot build PDF versions of all the help pages
    

    ejecuto make

    $ make
    

    ejecutamos make check

    $ make check
    

    Instalción.. make install

    $ sudo make install
    

    y el resto de makes:

    $ make dvi
    $ make pdf
    $ make info
    

    Ejecutamos la versión instalada (2.13) en consola:

    $ /usr/local/R2.13/bin/R
    

    Salida

    R version 2.13.2 (2011-09-30)
    Copyright (C) 2011 The R Foundation for Statistical Computing
    ISBN 3-900051-07-0
    Platform: i686-pc-linux-gnu (32-bit)
    [..]
    

    Ejecutamos la versión 2.15 desde consola:

    $ /usr/lib/R/bin/R
    

    R en Consola. Hacer que se ejecute por defecto la versión nueva. Para eso hemos de añadir el directporio al PATH

    $ PATH=/usr/local/R2.13/bin:$PATH
    $ export PATH
    

    Si queremos volver a la situación anterior debemos de quitar esa ruta del path

    $ PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
    $ export PATH
    

    Seleccionar la versión de R con para RStudio (y consola)

    Ahora bien, solo en determinadas ocasiones queremos trabajar con la versión antigua, así que creo que no cuesta mucho ir cambiando el script que está ubicado en /usr/bin/ entre una versión y otra. Para eso lo que hago es copiar ambos en el directorio /usr/bin/ pero renombrados con su versión “R13” y “R15”, y cada vez que quiero usar una versión machaco el fichero “R” con el susodicho.

    $ sudo cp /usr/bin/R /usr/bin/R15-bck
    $ sudo cp /usr/bin/R /usr/bin/R15
    $ sudo cp /usr/local/R2.13/bin/R /usr/bin/R13
    $ sudo cp /usr/bin/R13 /usr/bin/R13-bck
    

    Seleccionamos la versión con la queramos trabajar en R tanto en consola como en RStudio:

    Para usar la versión, 2.13

    $ sudo cp /usr/bin/R13 /usr/bin/R
    

    Para usar la versión, 2.15

    $ sudo cp /usr/bin/R15 /usr/bin/R
    

    Otras maneras que he estado mirando es exportar las variables de entorno PATH y la variable de entorno RSTUDIO_WHICH_R indicandoles qué R quiero lanzar…. me ha parecido mucho más engorroso pq tenía que estar recargando en enviroment o el .profileconstantemente.

    Enlaces de interés:

5 Respuestas a “Instalación de dos versiones de R y como elegir la versión en RStudio usando linux

  1. Gracias! Muy útil 😉

  2. Hola, tengo linux fedora 20 y hasta ahora no puedo realizar la instalación de una version anterior a la que ya tengo.
    Puedes ayudarme con eso?

  3. ¿Cómo desinstalas R cuando éste ha sido instalado a través de la instrucción make?

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax