2012-05-15 11 views
13

Io sono laico di unix e Sofar I che usano R in windows. Per esempio digito seguendo nella mia sessione R (in R gui).esecuzione di script o comandi con interprete in unix per unix-layman

# this is a my funny example script 
X <- 1:10 
Y <- 21:30 
plot(X, Y) 
myfun <- function (x){ 
       x1 <- x^0.2 
       return (x1) 
      } 
myfun(X) 

Come posso raggiungere questo obiettivo in shell UNIX, in due situazioni -

(1) direttamente nella riga di comando tramite un interpeter (2) creazione di uno script e l'esecuzione di script.

Si prega di fornire passo considerando che sono laico per unix.

+1

Forse si dovrebbe utilizzare R per Linux? –

+0

Ci scusiamo per la semplice domanda, qual è la differenza tra linux e unix R? Credo che possiamo eseguire R in Unix – SHRram

+1

Che cosa hai provato? R dovrebbe installarsi bene su unix o linux, e puoi accedervi tramite la riga di comando con 'R'. Puoi anche guardare alcuni degli eccellenti strumenti disponibili (suggerirei [RStudio] (http://www.rstudio.org) come un eccellente punto di partenza). Infine, eseguire uno script può essere fatto facilmente. Spesso usi 'R CMD BATCH script.R' ma ci sono molte alternative e opzioni che sono ben documentate. – Justin

risposta

25

Supponendo di salvare lo script in un semplice file di testo con il nome so.R, è possibile eseguirlo sotto Linux/Unix digitando R al prompt. Una volta in R immettere

source('so.R') 

per eseguire lo script all'interno dell'ambiente R (questo presuppone il file so.R è nella stessa directory in cui si è quando si emette questo comando).

Per eseguire lo script dalla riga di comando di Linux/Unix utilizzare il seguente comando:

R CMD BATCH so.R 

Nota che ho avuto la trama per mostrare quando mi sono imbattuto lo script all'interno di R, ma dalla riga di comando di Linux non mostra. Sospetto che venga rapidamente visualizzato e poi si allontani, quindi ci sarà un comando R che devi cercare per farlo mettere in pausa dopo che viene visualizzata la trama.

+4

Si consiglia di considerare lo script effettivo preceduto da 'Rscript' (fornito con R) o il nostro vecchio' r' (dal nostro pacchetto littler). L'uso di 'R CMD BATCH' è deprecato a favore di Rscript. Se ce l'hai, anche r è bello. –

1

Sto supponendo dal modo in cui hai formulato la tua domanda che forse SSH hai inserito in una macchina Linux? O che hai installato Ubuntu, ad esempio, sul tuo solito laptop/PC.

Supponendo che sia il secondo caso: aprire un terminale e digitare sudo apt-get install r-base. Quindi digitare R. Quindi digitare

X <- 1:10 
Y <- 21:30 
plot(X, Y) 
myfun <- function (x){ 
       x1 <- x^0.2 
       return (x1) 
      } 
myfun(X) 

Dal momento che la tua domanda è di circa unix contro linux piuttosto che R, si potrebbe anche provare http://unix.stackexchange.com. C'è molto da dire sulle differenze tra linux e unix, ma tutto ciò che probabilmente dovete sapere è: download Ubuntu, masterizzarlo su un disco, quindi riavviare il computer con il disco nell'unità CD.

Spero che questo aiuti.

+0

È _lowercase_ R: 'sudo apt-get install r-base' poiché tutti i nomi dei pacchetti sono in minuscolo. –

+0

Grazie @DirkEddelbuettel. Fisso. – isomorphismes

1

Se il programma sta andando a lavorare su un singolo set di dati, allora semplice-R potrebbe essere la soluzione:

http://code.google.com/p/simple-r/

E è stato appositamente progettato per l'analisi statistica semplice come una parte della linea di comando di Linux. Ad esempio, se si desidera tracciare alcuni dati, 'r -p data.txt' farà il lavoro; per ottenere il coefficiente di correlazione: 'r cor data.txt' sarà sufficiente.

+0

In realtà abbiamo cercato/usr/bin/r alcuni anni prima per il nostro progetto più piccolo, che è un po 'più generico. –

1

Gli esempi seguenti mostrano due modi per eseguire codice R in uno script di shell. Entrambi gli esempi definiranno anche le funzioni senza eseguirle, se gli script sono caricati in una sessione R interattiva tramite la funzione source().

Il primo esempio consente di dare argomenti come si farebbe per qualsiasi altro shell script, ma non passerà supplementari R-options a R (perché rscript dà "--args" alla R come uno degli argomenti) .

Il secondo esempio consente di dare ulteriori R-opzioni, ma genera messaggi (innocui) di avvertimento a meno che non si dà "--args" come uno degli script di argomenti. Questa versione è meglio evitare se non si hanno requisiti speciali.

prototipo-Rscript.r

#!/usr/bin/env Rscript 
# Prototype R script for use at command line in Linux, Mac OS X, UNIX 

# References: 
# Manual "A Introduction to R", available via help.start() from the R Console 
# Appendix "B.1 Invoking R from the command line" in "A Inroduction to R", 

showArguments <- function(argv) { 
    print(argv) 
    0 
} 

if (! interactive()) { 
    # set some error return codes 
    SCRIPT_ERROR <- 10      # see documentation for quit() 
    SCRIPT_ARG_ERROR <- SCRIPT_ERROR + 1 

    # Define ARGV as script path concatenated to script arguments 
    ARGV <- commandArgs(FALSE)   # start with all the arguments given to R 
    scriptPath <- sub("^--file=", "", grep("^--file=", ARGV, value=TRUE)) [[1]] 
    ARGV <- c(scriptPath, commandArgs(TRUE)) 

    if (length(ARGV) < 2) { 
     cat(file=stderr(), sep="", 
      "Usage: ", ARGV[[1]], " [ options ] item ...\n", 
      "  Do something with item\n", 
      "  See script for details\n") 
     quit(save="no", status=SCRIPT_ARG_ERROR) 
    } 
    quit(save="no", status=showArguments(ARGV)) 
} 

prototipo-shellscript.r

#!/usr/bin/env R --slave --vanilla --quiet -f 
# Prototype R script for use at command line in Linux, Mac OS X, UNIX 

# References: 
# Manual "A Introduction to R", available via help.start() from the R Console 
# Appendix "B.1 Invoking R from the command line" in "A Inroduction to R", 

showArguments <- function(argv) { 
    print(argv) 
    0 
} 

if (! interactive()) { 
    # set some error return codes 
    SCRIPT_ERROR <- 10      # see documentation for quit() 
    SCRIPT_ARG_ERROR <- SCRIPT_ERROR + 1 

    # Define ARGV as the arguments given to this script (after argument “-f”) 
    ARGV <- commandArgs(FALSE)   # start with all the arguments given to R 
    ARGV <- ARGV[(grep("-f", ARGV) [[1]] + 1):length(ARGV)] 
    if (any(grepl("--args", ARGV))) { # remove arguments intended only for R 
     ARGV <- c(ARGV[[1]], commandArgs(TRUE)) 
    } 

    if (length(ARGV) < 2) { 
     cat(file=stderr(), sep="", 
      "Usage: ", ARGV[[1]], " [ R_options ] --args [ options ] item ...\n", 
      "  Do something with item\n", 
      "  See script for details\n") 
     quit(save="no", status=SCRIPT_ARG_ERROR) 
    } 
    quit(save="no", status=showArguments(ARGV)) 
} 
Problemi correlati