Creare pacchetti R in ambiente Windows

Uno dei principali pregi di R è che, essendo un vero e proprio linguaggio di programmazione, può essere personalizzato. L’utente può creare delle nuove funzioni per le proprie esigenze; tali funzioni possono essere organizzate in librerie (packages) che possono essere richiamate con facilità a ogni occorrenza e condivise con altri utenti.

In questo post ho provato a riassumere sinteticamente i passaggi necessari per la costruzione di librerie R in ambiente Windows, considerando sia Win XP che Win 7. Il post non ha la pretesa di esaurire l’argomento ma può ben integrare altre guide dedicate (si vedano i riferimenti bibliografici).

1. Installazione programmi

Per programmare in R è necessario installare alcune componenti:

ActivePerl: è la distribuzione del linguaggio Perl per Windows. Scaricabile da qui.

MiKTeX: è la distribuzione LaTeX per Windows. Scaricabile da qui.

MinGW: è il porting in ambiente Windows del compilatore GCC (GNU Compiler Collection). Necessario solo quando si ha a che fare con chiamate a funzioni esterne scritte in linguaggi compilati come C, C++ e Fortran. È disponibile qui per architetture a 32 bit e qui per architetture a 64 bit.

Rtools: strumenti necessari per l’assemblamento dei pacchetti. Viene aggiornato di continuo, coerentemente con l’uscita di una nuova versione di R. È quindi opportuno accertarsi che la versione di Rtools sia congruente con la versione di R installata. Scaricabile da qui.

N.B.: fino a pochi anni fa, con le precedenti versioni di R, era necessaria l’installazione di HTML Help Workshop, richiesto per la costruzione degli help delle funzioni. Oggi R non si appoggia più a questo applicativo ma sfrutta il browser web, per cui HTML Help Workshop non è più necessario.

2. Modificare il path

Andare su:

Pannello di Controllo > Sistema > Impostazioni di sistema avanzate > Scheda ‘Avanzate’ > Variabili d’ambiente

Evidenziare Path e cliccare su Modifica. In corrispondenza della casella di testo Valore variabile, portarsi col cursore all’inizio della stringa. Qui bisogna scrivere, in maniera consecutiva senza spazi e facendo attenzione a non cancellare quello che c’è già scritto nella casella:

C:\Perl\bin;
C:\MinGW\bin;
C:\Programmi\MiKTeX 2.x\miktex\bin;
C:\Rtools\bin;C:\Programmi\R\R-2.x.x\bin;

Questo se si dispone di un sistema con architettura a 32 bit. Diversamente, se l’architettura è a 64 bit, scrivere:

C:\Perl64\site\bin;
C:\Perl64\bin;
C:\MinGW64\bin;
C:\Program Files\MiKTeX 2.x\miktex\bin\x64\;
C:\Program Files\R\R-3.x.x\bin\x64\;
C:\Rtools\bin;C:\Rtools\gcc-4.x.x\bin64;

Per semplicità di lettura, qui sopra il testo è stato riportato su più righe; tuttavia, come specificato sopra, esso va scritto in maniera consecutiva. Si faccia attenzione che i numeri che indicano le versioni dei programmi siano coerenti con quelle installate sul computer (le “x” indicano le versioni dei programmi, e devono essere sostituite con i numeri seriali delle versioni installate).

3. Creazione della struttura del package

Aprire R e lanciare i comandi necessari alla costruzione delle proprie funzioni che dovranno essere incluse nel pacchetto. Assicurarsi che gli oggetti contenuti nell’area di lavoro siano solo queste funzioni (e, eventualmente, i dataset che si intende inserire nella libreria). Tutti gli oggetti che ora si trovano nell’area di lavoro, finiranno dentro la libreria.

Ammettiamo di aver costruito tre funzioni, chiamate: “pippo”, “pluto” e “topolino”, e di volerle inserire tutte nella libreria “topolinia”. Da R lanciamo il comando:

package.skeleton(name="topolinia", path="C:\\Programmi\\R\\R-3.x.x\\src\\library")

Il comando crea, nella directory passata come valore all’argomento path, una cartella contenente la struttura base del pacchetto. Accertarsi che il percorso sia corretto: è importante che lo scheletro del package si trovi proprio nella cartella src/library di R.

Modificare il file DESCRIPTION e i file con estensione .Rd. I file Rd andranno a costituire la documentazione (HTML Help) del package; nei manuali di Duncan Murdoch e di Fabio Frascati viene spiegato bene come modificarli. Fare attenzione agli esempi, che devono funzionare correttamente (altrimenti la libreria non potrà essere costruita).

N.B.: con le precedenti versioni di R era necessario trasformare preventivamente i file Rd in HTML con una specifica sequenza di comandi. Oggi quest’operazione non è più necessaria.

4. Check e installazione del package

Aprire il prompt dei comandi: dal menù Start, nella casella cerca programmi e file scrivere “cmd” e premere invio. Una volta aperto il terminale, posizionarsi nella cartella in cui si trovano i sorgenti del package, utilizzando il comando:

cd C:\Programmi\R\R-3.x.x\src\library

Lanciare il check della libreria, che verifica che tutto sia in ordine e crea i documenti necessari all’installazione:

R CMD check topolinia

Se tutto è in regola, procedere all’installazione:

R CMD INSTALL topolinia

Nella directory C:\Programmi\R\R-3.x.x\library, che contiene tutte le librerie, è stata aggiunta la cartella “topolinia”. Il package ora può essere caricato su R attraverso i comandi library o require. Per trasferirlo in altri computer comprimere in formato zip la cartella “topolinia”. Per archiviare i sorgenti del package in formato tar.gz, utilizzare il comando:

R CMD build topolinia

N.B.: in Windows 7 è necessario aprire il prompt dei comandi con i permessi di amministratore. Questo può essere fatto tenendo premuti i pulsanti CTRL e SHIFT mentre si dà l’invio per l’apertura del terminale.

Riferimenti sul web

Acadia Centre for Mathematical Mod. and Comp. Building R Libraries.
Frascati, F. (2006). Creare packages per R sotto Windows XP.
Hornik, K. (2004). Packaging, documentation and testing.
Hyndman, R.J. (2009). Building R packages for Windows.
Lenarcic, A. (2007). R Package writing tutorial.
Murdoch, D. (2010). Parsing Rd Files.
R Core Team (2013). Writing R Extensions.
Rossi, P. (2006). Making R packages under Windows: a tutorial.

Print Friendly

Commenti per “Creare pacchetti R in ambiente Windows

  1. Pingback: InsulaR

Lascia un Commento