2012-06-01 13 views
6

I miei collaboratori desiderano assicurarsi che il nostro lavoro in R sia indipendente dalla piattaforma, in particolare il codice verrà eseguito su Linux, Mac e Windows e che i file creati su un sistema funzioneranno su altri sistemi.Esistono funzioni di R dipendenti dal sistema?

Dal momento che il problema è già emerso nel mio gruppo, gradirei una risposta generale che mi consenta di rassicurare con fiducia i miei collaboratori sul fatto che non ci sarà un problema. Ad esempio, sarebbe utile avere un riferimento diverso da "perché (subject matter expert) detto così su SO".

  1. Generalmente, c'è un modo per sapere se alcune funzionalità di R sono specifiche della piattaforma (posso supporre che ciò sia indicato nell'aiuto di una funzione)?
  2. Ci sono pacchetti o funzioni di cui posso essere sicuro che saranno indipendenti dalla piattaforma?
  3. Esistono tipi di pacchetti o funzioni di cui dovrei prestare attenzione?

Ho già chiesto due domande circa la leggibilità multipiattaforma dei file creati da R: What are the disadvantages of using .Rdata files compared to HDF5 or netCDF? e Are R objects dumped using `dump` readable cross-platform?

risposta

4

Oltre risposta di Carl, l'ovvio modo per garantire che il vostro lavoro in indipendente dalla piattaforma è quello di prova su tutte le piattaforme.

Che è esattamente ciò che CRAN fa con i suoi 3800 e pacchetti, e si ha accesso ai registri here.

In breve, R si sforza davvero di essere indipendente dalla piattaforma e in genere riesce. Per fare ciò con il tuo codice, spetta a te evitare API o strumenti che introducono dipendenze. Guarda astrazioni come system.file(package="boot") e le funzioni che usano --- puoi facilmente astrarre le "radici" del file system, e i separatori sono già presi in considerazione.

2

Controllare cran.r-project.org per gli elenchi dei pacchetti. Ogni pacchetto ha una pagina che ti dirà se è stato superato il test per diversi sistemi operativi. Inoltre, come hai suggerito, i file di aiuto sono piuttosto espliciti sulle dipendenze del SO. R è "intelligente" abbastanza da tradurre "/" in "\" nei nomi di percorso per quei poveri che lavorano in Windows. In generale, l'accesso alla grafica è l'area che ha più probabilità di avere dipendenze dalla piattaforma. Ovviamente se nel tuo sistema manca {X11, ImageMagick, ..} sei bloccato comunque.

+2

Vale la pena notare che la funzione 'file.path()' è la chiave per creare percorsi di file indipendenti dalla piattaforma. –

+0

@OP: sull'argomento dei percorsi dei file, fai attenzione che le barre finali sono (a volte) non valide in Windows. 'file.exists (normalizePath (" ~ "))' restituisce 'TRUE' mentre' file.exists (normalizePath ("~ /")) 'restituisce' FALSE'. Entrambi sono 'TRUE' su Linux. – jthetzel

2

Oltre ai commenti di Carl's e Dirk, è necessario comprendere che qualsiasi pacchetto che richiede la compilazione dal sorgente (come fanno molti (tutti?) Pacchetti su Omegahat, Rforge o r-forge) dovranno essere eseguiti su una macchina che ha le librerie C e Fortran appropriate. Alcuni pacchetti interessanti dipendono da GTK + e Tcl/Tk e potrebbe essere necessario assicurarsi di poter ottenere le versioni corrette. La pagina http://r.research.att.com/ che Simon Urbanek gestisce è una risorsa utile per stare al passo con le risorse di supporto per i Mac.

Problemi correlati