Ricerca…


introduzione

Se si desidera applicare di routine un'analisi R a un sacco di file di dati separati o fornire un metodo di analisi ripetibile ad altre persone, uno script R eseguibile è un modo semplice per farlo. Invece di voi o dell'utente che deve chiamare R ed eseguire il vostro script all'interno di R tramite source(.) O una chiamata di funzione, l'utente può semplicemente chiamare lo script stesso come se fosse un programma.

Osservazioni

Per rappresentare i canali di input / output standard, utilizzare il file("stdin") funzioni file("stdin") (input da terminale o altro programma tramite pipe), stdout() (output standard) e stderr() (errore standard). Notare che mentre c'è la funzione stdin() , non può essere usata quando si fornisce uno script già pronto a R, perché leggerà le righe successive di quello script invece dell'input dell'utente.

La struttura di base del programma R standalone e come chiamarla

Il primo script R standalone

Gli script R autonomi non vengono eseguiti dal programma R ( R.exe in Windows), ma da un programma chiamato Rscript ( Rscript.exe ), incluso di default nell'installazione R

Per accennare a questo fatto, gli script R standalone iniziano con una linea speciale chiamata riga Shebang , che contiene il seguente contenuto: #!/usr/bin/env Rscript . Sotto Windows, è necessaria una misura aggiuntiva, che viene rilevata in seguito.

Il seguente semplice script R standalone salva un istogramma sotto il nome del file "hist.png" dai numeri che riceve come input:

#!/usr/bin/env Rscript

# User message (\n = end the line)
cat("Input numbers, separated by space:\n")
# Read user input as one string (n=1 -> Read only one line)
input <- readLines(file('stdin'), n=1)
# Split the string at each space (\\s == any space)
input <- strsplit(input, "\\s")[[1]]
# convert the obtained vector of strings to numbers
input <- as.numeric(input)

# Open the output picture file
png("hist.png",width=400, height=300)
# Draw the histogram
hist(input)
# Close the output file
dev.off()

Puoi vedere diversi elementi chiave di uno script R standalone. Nella prima riga, vedi la linea Shebang. Seguito da quello, cat("....\n") viene utilizzato per stampare un messaggio per l'utente. Usa il file("stdin") ogni volta che vuoi specificare "Input utente su console" come origine dati. Questo può essere usato al posto del nome di un file in diverse funzioni di lettura dei dati ( scan , read.table , read.csv , ...). Dopo che l'input dell'utente è stato convertito da stringhe in numeri, inizia la stampa. Lì, si può vedere, che i comandi di tracciatura che devono essere scritti su un file devono essere racchiusi in due comandi. Questi sono in questo caso png(.) E dev.off() . La prima funzione dipende dal formato del file di output desiderato (altre scelte comuni sono jpeg(.) E pdf(.) ). La seconda funzione, dev.off() è sempre richiesta. Scrive la trama nel file e termina il processo di tracciamento.

Preparazione di uno script R standalone

Linux / Mac

Il file dello script standalone deve prima essere reso eseguibile. Questo può accadere facendo clic con il pulsante destro del mouse sul file, aprendo "Proprietà" nel menu di apertura e selezionando la casella di controllo "Eseguibile" nella scheda "Autorizzazioni". In alternativa, il comando

chmod +x PATH/TO/SCRIPT/SCRIPTNAME.R

può essere chiamato in un terminale.

finestre

Per ogni script autonomo, un file batch deve essere scritto con il seguente contenuto:

"C:\Program Files\R-XXXXXXX\bin\Rscript.exe" "%~dp0\XXXXXXX.R" %*

Un file batch è un normale file di testo, ma che ha un'estensione *.bat tranne un'estensione *.txt . Crealo usando un editor di testo come notepad (non Word ) o simile e inserisci il nome del file tra virgolette "FILENAME.bat" ) nella finestra di dialogo di salvataggio. Per modificare un file batch esistente, fai clic destro su di esso e seleziona "Modifica".

Devi adattare il codice mostrato sopra dappertutto XXX... è scritto:

  • Inserisci la cartella corretta in cui risiede l'installazione R
  • Inserisci il nome corretto del tuo script e inseriscilo nella stessa directory di questo file batch.

Spiegazione degli elementi nel codice: La prima parte "C:\...\Rscript.exe" indica a Windows dove trovare il programma Rscript.exe . La seconda parte "%~dp0\XXX.R" dice a Rscript di eseguire lo script R che hai scritto che risiede nella stessa cartella del file batch ( %~dp0 rappresenta la cartella del file batch). Infine, %* inoltra tutti gli argomenti della riga di comando che si danno al file batch allo script R.

Se si fa doppio clic sul file batch, viene eseguito lo script R. Se trascini i file sul file batch, i nomi dei file corrispondenti vengono assegnati allo script R come argomenti della riga di comando.

Usare littler per eseguire script R

littler (pronounced little r ) ( cran ) fornisce, oltre ad altre caratteristiche, due possibilità di eseguire script R dalla riga di comando con il comando littler r (quando si lavora con Linux o MacOS).

Installazione più piccola

Dalla R:

install.packages("littler")

Il percorso di r è stampato nel terminale, come

You could link to the 'r' binary installed in
'/home/*USER*/R/x86_64-pc-linux-gnu-library/3.4/littler/bin/r'
from '/usr/local/bin' in order to use 'r' for scripting.

Per poter chiamare r dalla riga di comando del sistema, è necessario un collegamento simbolico:

ln -s /home/*USER*/R/x86_64-pc-linux-gnu-library/3.4/littler/bin/r /usr/local/bin/r

Utilizzando apt-get (Debian, Ubuntu):

sudo apt-get install littler

Utilizzo di Littler con gli script .r standard

Con r da littler è possibile eseguire script R standalone senza modifiche allo script. Script di esempio:

# User message (\n = end the line)
cat("Input numbers, separated by space:\n")
# Read user input as one string (n=1 -> Read only one line)
input <- readLines(file('stdin'), n=1)
# Split the string at each space (\\s == any space)
input <- strsplit(input, "\\s")[[1]]
# convert the obtained vector of strings to numbers
input <- as.numeric(input)

# Open the output picture file
png("hist.png",width=400, height=300)
# Draw the histogram
hist(input)
# Close the output file
dev.off()

Nota che nessuno shebang è in cima agli script. Se salvato come ad esempio hist.r , è direttamente richiamabile dal comando di sistema:

r hist.r

Usando littler su script shebanged

È anche possibile creare script R eseguibili con minore, con l'uso dello shebang

#!/usr/bin/env r

all'inizio della sceneggiatura. Lo script R corrispondente deve essere reso eseguibile con chmod +X /path/to/script.r ed è richiamabile direttamente dal terminale di sistema.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow