Anexo A Actualización de un lote de paquetes


Cada versión de R se identifica con tres números separados por un punto. Por ejemplo R 3.6.3. Estos números se denominan, en su orden: major, minor y patch (mayor, menor y parche).

Los cambios de patch son los que se generan con mayor frecuencia (cada dos o tres meses aproximadamente). En estos casos, los cambios están enfocados en corregir errores y mejorar la estabilidad, manteniendo la compatibilidad dentro de la correspondiente versión menor.

Los cambios de minor o major implican una reestructuración más profunda, haciéndose necesario reinstalar los paquetes para garantizar su compatibilidad.

En Windows, los paquetes de R se encuentran alojados dentro de la carpeta de documentos del usuario, en una subcarpeta nombrada acorde con el número de la versión menor. Por ejemplo:

C:\Users\GC\AppData\Local\R\win-library\3.6

Dentro de la carpeta 3.6 hay una serie de subcarpetas correspondientes a los paquetes instalados: abind, ade4, … , zip, zoo.

Los paquetes alojados dentro de esta ruta funcionan adecuadamente con cualquiera de los parches de la correspondiente versión menor, esto es, 3.6.0, 3.6.1, 3.6.2 y 3.6.3.

Cuando se instala una nueva versión minor o major de R (cuando cambia el segundo y/o el primer número de la versión), se añade una carpeta para alojar los paquetes del correspondiente minor, con todos los parches que pudieran generarse a futuro. Así, al instalar la versión R 4.0.0, se añade la carpeta 4.0, en la cual estarán los paquetes que funcionarán para todos los parches de R que aparezcan dentro del minor 0 del major 4: R 4.0.1, R 4.0.2, R 4.0.3…

C:\Users\GC\AppData\Local\R\win-library\4.0

Aunque podría pensarse que para tener los paquetes disponibles en la versión 4.0.0 sería suficiente con copiar todo el contenido de la carpeta 3.6 dentro de la carpeta 4.0 (o, mejor aun, renombrar 3.6 como 4.0), los paquetes trasladados de esta manera no funcionarán, por corresponder a un minor anterior. En consecuencia, se hace necesario reinstalar nuevamente todos los paquetes que vayan a utilizarse en la nueva versión.

En muchos casos los usuarios han acumulado una cantidad de paquetes que harían que este proceso fuera muy tortuoso si tuviera que realizarse de manera ‘manual’. No obstante, las siguientes instrucciones permiten realizarlo de manera semiautomatizada.

En esencia, se trata de leer desde el anterior minor la lista de paquetes instalados. A continuación, desde la última versión instalada, se lee la lista y se instruye su instalación.

En el siguiente ejemplo, supóngase que se pasa de la versión R 3.6.3 a la versión R 4.0.0.

  1. Abrir cualquiera de las versiones del anterior minor de R (la versión R 3.6.3, en el presente ejemplo). Es necesario tener en cuenta que no puede abrirse desde RStudio, pues allí se carga la versión más recientemente instalada (la 4.0.0). Debe abrirse desde la GUI de R (capítulo 1.3).
  1. Ejecutar las siguientes instrucciones:

    paquetes <- installed.packages()[, 1]
    write(paquetes, "paquetes.txt")

    Estas instrucciones generan un archivo de texto con la lista de los paquetes que estaban instalados en la versión R 3.6.3. Dicho archivo quedará localizado en la ruta de trabajo. Si no se sabe cuál es la ruta en cuestión, puede averiguarse ejecutando la siguiente instrucción antes de cerrar el programa: getwd().

    Luego de esto, puede cerrarse R.

  2. Abrir la versión más reciente de R (la 4.0.0, para el presente ejemplo). Esto puede hacerse a través de RStudio.

  1. A continuación, se ejecutan las siguientes instrucciones, habiendo ubicado en la ruta de trabajo el archivo con la lista de paquetes que se generó anteriormente (‘paquetes.txt’):

    paquetes <- readLines("paquetes.txt")
    setRepositories(graphics = FALSE, ind = 1:6)
    install.packages(paquetes)

    Tras ejecutar las anteriores instrucciones, aparecerá una ventana de diálogo con la pregunta:

    Do you want to restart R prior to installing?

    Debe responderse ‘NO’.

El proceso de instalación de los paquetes compatibles con la nueva versión comenzará.