2012-05-15 20 views
13

Soy laico para unix y sofar I usando R en windows. Por ejemplo, escribo following en mi sesión R (en R gui).ejecutando r scripts o comandos con intérprete en Unix para 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) 

¿Cómo puedo lograr esto en shell de Unix, en dos situaciones -

(1) directamente en la línea de comandos a través de un interpeter (2) la creación de una secuencia de comandos y ejecutar el script.

Proporcione el paso que considera soy laico a unix.

+1

Tal vez deberías utilizar R para Linux? –

+0

Disculpe la simple pregunta, ¿cuál es la diferencia entre linux y unix R? Creo que podemos ejecutar R en unix – SHRram

+1

¿Qué has probado? R debe instalarse bien en Unix o Linux, y puede acceder a él a través de la línea de comando con 'R'. También puede ver algunos de los excelentes guis disponibles (sugeriría [RStudio] (http://www.rstudio.org) como un excelente punto de partida). Finalmente, ejecutar un script se puede hacer fácilmente. A menudo utilizas 'R CMD BATCH script.R' pero hay muchas alternativas y opciones que están bien documentadas. – Justin

Respuesta

25

Suponiendo que guarde el script en un archivo de texto simple con el nombre so.R, puede ejecutarlo en Linux/Unix escribiendo R en el indicador. Una vez en I entran

source('so.R') 

para ejecutar la secuencia de comandos en el entorno R (esto supone que el archivo so.R está en el mismo directorio que usted es cuando se emite este comando).

Para ejecutar el script desde la línea de comandos de Linux/Unix utilice el siguiente comando:

R CMD BATCH so.R 

Tenga en cuenta que me dieron la trama para mostrar cuando me encontré con la secuencia de comandos en el interior de R, pero a partir de la línea de comandos de Linux no se muestra Sospecho que se muestra rápidamente y luego se va, por lo que habrá un comando R que tendrá que mirar para que se detenga después de que se muestre la trama.

+4

Es posible que desee considerar las secuencias de comandos reales con '' Rscript' (viene con R) o nuestra 'r' anterior (de nuestro paquete más pequeño). El uso de 'R CMD BATCH' está en desuso en favor de Rscript. Si lo tienes, r también es bueno. –

1

Supongo que por la forma en que planteaste tu pregunta, ¿es posible que hayas hecho SSH en una máquina Linux? O que instaló Ubuntu, por ejemplo, en su computadora portátil/PC habitual.

Suponiendo que es el segundo caso: abra un terminal y escriba sudo apt-get install r-base. Luego escriba R. A continuación, escriba

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

Debido a que su pregunta se refiere a unix frente linux en lugar de R, también se podría tratar http://unix.stackexchange.com. Hay mucho que decir acerca de las diferencias entre Linux y Unix, pero todo lo que probablemente necesite saber es: download Ubuntu, grábelo en un disco, luego reinicie su computadora con el disco en su unidad de CD.

Espero que esto ayude.

+0

Es _lowercase_ R: 'sudo apt-get install r-base' ya que todos los nombres de paquetes son minúsculas. –

+0

Gracias @DirkEddelbuettel. Fijo. – isomorphismes

1

Si el programa se va a trabajar en un único conjunto de datos, a continuación, sencilla-R podría ser la solución:

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

Está especialmente diseñado para el análisis estadístico simple como una parte de la línea de comandos de Linux. Por ejemplo, si uno quiere trazar algunos datos, 'r -p data.txt' hará el trabajo; para obtener el coeficiente de correlación: 'r cor data.txt' será suficiente.

+0

En realidad acabamos de/usr/bin/r unos años antes para nuestro proyecto más pequeño, que es un poco más genérico. –

1

Los ejemplos a continuación muestran dos formas de ejecutar código R en un script de shell. Ambos ejemplos también definirán funciones sin ejecutarlas, si los scripts están cargados en una sesión R interactiva a través de la función source().

El primer ejemplo le permite dar argumentos como lo haría con cualquier otro tejido guión, pero no pasará-R opciones adicionales para R (porque RSCRIPT da "--args" a R como uno de los argumentos) .

El segundo ejemplo le permite ofrecer opciones R adicionales, pero genera (inofensivo) mensajes de advertencia a menos que especifique "--args" como uno de los argumentos de script . Esta versión es mejor evitarla a menos que tenga requisitos especiales.

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)) 
} 
Cuestiones relacionadas