È molto comodo avere script R per fare semplici trame dalla riga di comando. Tuttavia, eseguire R da script di bash non è affatto conveniente. L'ideale potrebbe essere qualcosa di simileQual è il modo migliore per utilizzare gli script R sulla riga di comando (terminale)?
#!/path/to/R
...
o
#!/usr/bin/env R
...
ma non sono stato in grado di fare uno di questi lavori.
Un'altra opzione è mantenere gli script puramente in R, ad es. script.R
e invocandolo con R --file=script.R
o simile. Tuttavia, occasionalmente uno script si baserà su interruttori di linea di comando oscuri a cui punto parte del codice esiste al di fuori dello script. Esempio: spostando le cose in R da bash tramite un profilo .RR locale, gli switch desiderati sono quindi tutti --vanilla
, ad eccezione di --no-init-file
.
Un'altra opzione è uno script bash per archiviare i flag R ed essere eseguibile in modo indolore, che quindi chiama lo script R. Il problema è che questo significa che un singolo programma è stato diviso in due file che ora devono essere sincronizzati, trasferiti a nuove macchine insieme, ecc.
L'opzione che attualmente disprezzo di meno è l'incorporamento della R in uno script bash :
#!/bin/bash
... # usage message to catch bad input without invoking R
... # any bash pre-processing of input
... # etc
R --random-flags <<RSCRIPT
# R code goes here
RSCRIPT
Tutto è in un unico file. È eseguibile e gestisce facilmente argomenti. Il problema è che la combinazione di bash e R in questo modo elimina praticamente la possibilità che nessun IDE fallisca su uno o l'altro e mi fa davvero male al cuore.
C'è qualche modo migliore che mi manca?
Sì, penso che questo sia il modo "ufficiale" per farlo. – Frank
E l'esecuzione di 'Rscript --help' dalla riga di comando elenca un sacco di opzioni utili che possono essere aggiunte allo shebang, come' --vanilla'. – flodel
Ricordiamo anche la funzione 'commandArgs' ei pacchetti' getopt' e 'optparse' per analizzare la riga di comando. In modo che gli argomenti e le opzioni possano essere passati agli script anche quando si esegue dalla riga di comando. – flodel