Pregunta sobre r, unix, shell, linux – ejecutando r scripts o comandos con el interpretador en unix para unix-layman

13

Soy laico para unix y sofar I usando R en windows. Por ejemplo, escribo siguiente en mi sesión R (en R gui).

# 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 intérprete (2) creando un script y ejecutando un script.

Por favor, proporcione el paso teniendo en cuenta que soy laico a Unix

Te sugiero que pases por elR documentación. Ahí tienes buenas instrucciones parainstalación y por ejemploscripting. Maehler
¿Qué has probado? R debería instalarse muy bien en Unix o Linux, y puede acceder a él a través de la línea de comandos conR. También puede ver algunos de los excelentes guis disponibles (sugeriríaRStudio como un excelente punto de partida). Finalmente, ejecutar un script puede hacerse fácilmente. A menudo usasR CMD BATCH script.R pero hay muchas alternativas y opciones que están bien documentadas. Justin
Tal vez deberías usar R para Linux? Burton Samograd
Perdón por la simple pregunta, ¿cuál es la diferencia entre Linux y Unix R? Creo que podemos ejecutar R en Unix SHRram

Tu respuesta

4   la respuesta
1

Supongo que por la forma en que redactó su pregunta, ¿tal vez SSH en una máquina Linux? O que instaló Ubuntu, por ejemplo, en su computadora portátil / PC habitual.

Suponiendo que sea el segundo caso: abrir un terminal y escribirsudo apt-get install r-base. Entonces escribeR. Entonces escribe

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

Ya que tu pregunta es sobreunix versuslinux más bien queR, también puedes probarhttp://unix.stackexchange.com. Hay mucho que decir acerca de las diferencias entre Linux y Unix, pero todo lo que probablemente necesita saber es:descargar Ubuntu, grabe en un disco, luego reinicie su computadora con el disco en su unidad de CD.

Espero que esto ayude.

Esminúscula R:sudo apt-get install r-base ya que todos los nombres de los paquetes están en minúsculas. Dirk Eddelbuettel
Gracias @DirkEddelbuettel. Fijo. isomorphismes
1

Si su programa va a funcionar en un solo conjunto de datos, entonces simple-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 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.

De hecho, acaparamos / usr / bin / r unos años antes para nuestro proyecto más pequeño, que es un poco más genérico. Dirk Eddelbuettel
25

Suponiendo que guarde su script en un archivo de texto simple con el nombreso.R, puedes ejecutarlo bajo Linux / Unix escribiendoR en el aviso Una vez en R ingrese

  source('so.R')

para ejecutar el script dentro del entorno R (esto supone que el archivo so.R está en el mismo directorio que usted cuando ejecuta este comando).

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

  R CMD BATCH so.R

Tenga en cuenta que obtuve el gráfico que mostrar cuando ejecuté el script dentro de R, pero desde la línea de comandos de Linux no se muestra. Sospecho que se muestra rápidamente y luego desaparece, por lo que habrá un comando R que tendrá que buscar para hacer una pausa después de que muestre el gráfico.

Es posible que desee considerar scripting real al frenteRscript (viene con R) o nuestro mayorr (de nuestro paquete littler). El uso deR CMD BATCH Está en desuso a favor de Rscript. Si lo tienes, r es bueno también. Dirk Eddelbuettel
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 se cargan en una sesión interactiva R a través de la función source ().

El primer ejemplo le permite dar argumentos como lo haría con cualquier otro script de shell, pero no pasará opciones R adicionales a R (porque Rscript le da "--args" a R como uno de los argumentos).

El segundo ejemplo le permite dar opciones R adicionales, pero genera mensajes de advertencia (inocuos) a menos que proporcione "--args" como uno de los argumentos del 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))
}

Preguntas relacionadas