2012-05-15 3 views
13

Je suis profane à unix et sofar I en utilisant R dans windows. Par exemple je tape après dans ma session R (dans R gui).en cours d'exécution r scripts ou commandes avec interpréteur en unix pour 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) 

Comment puis-je parvenir en shell unix, dans deux situations -

(1) directement en ligne de commande via un interpeter (2) la création d'un script et un script en cours d'exécution.

S'il vous plaît fournir une étape compte tenu que je suis profane à unix.

+1

Peut-être que vous devriez utiliser R pour Linux? –

+0

Désolé pour la question simple, quelle est la différence entre linux et unix R? Je crois que nous pouvons courir R dans unix – SHRram

+1

Qu'avez-vous essayé? R devrait s'installer correctement sous Unix ou Linux, et vous pouvez y accéder via la ligne de commande avec 'R'. Vous pouvez également regarder quelques-unes des excellentes guis disponibles (je suggère [RStudio] (http://www.rstudio.org) comme un excellent point de départ). Enfin, exécuter un script peut être fait facilement. Vous utilisez souvent 'R CMD BATCH script.R' mais il existe de nombreuses alternatives et options qui sont bien documentées. – Justin

Répondre

25

En supposant que vous enregistrez votre script dans un simple fichier texte portant le nom so.R, vous pouvez l'exécuter sous Linux/Unix en tapant R à l'invite. Une fois en R entrer

source('so.R') 

pour exécuter le script dans l'environnement R (ce qui suppose que le fichier so.R se trouve dans le même répertoire que vous êtes lorsque vous émettez cette commande).

Pour exécuter le script à partir de la ligne de commande Linux/Unix utilisez la commande suivante:

R CMD BATCH so.R 

Notez que je suis l'intrigue de montrer quand je courais le script à l'intérieur de R, mais à partir de la ligne de commande Linux ça ne se voit pas. Je soupçonne qu'il est rapidement affiché et qu'il s'en va, alors il y aura une commande R que vous devrez rechercher pour faire une pause après l'affichage de l'intrigue.

+4

Vous voudrez peut-être considérer les scripts réels devant 'Rscript' (vient avec R) ou notre ancien' r' (de notre paquet littler). L'utilisation de 'R CMD BATCH' est dépréciée en faveur de Rscript. Si vous l'avez, r est gentil aussi. –

1

Je devine de la façon dont vous avez formulé votre question que vous avez peut-être SSH dans une machine Linux? Ou que vous avez installé Ubuntu, par exemple, sur votre ordinateur portable/PC habituel.

En supposant que c'est le deuxième cas: ouvrez un terminal et tapez sudo apt-get install r-base. Ensuite, tapez R. Tapez ensuite

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

Depuis votre question porte sur unix par rapport linux plutôt que R, vous pouvez également essayer http://unix.stackexchange.com. Il y a beaucoup à dire sur les différences entre linux et unix, mais tout ce que vous avez probablement besoin de savoir est: download Ubuntu, gravez-le sur un disque, puis redémarrez votre ordinateur avec le disque dans votre lecteur de CD.

Espérons que cela aide.

+0

Il s'agit de _lowercase_ R: 'sudo apt-get install r-base' car tous les noms de paquets sont en minuscules. –

+0

Merci @DirkEddelbuettel. Fixé. – isomorphismes

1

Si votre programme va travailler sur un seul jeu de données, alors simple r pourrait être la solution:

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

Il est spécialement conçu pour l'analyse statistique simple comme une partie de la ligne de commande Linux. Par exemple, si l'on veut tracer des données, 'r -p data.txt' fera l'affaire; pour obtenir le coefficient de corrélation: 'r cor data.txt' suffira.

+0

Nous avons en fait embauché/usr/bin/r quelques années plus tôt pour notre projet littler qui est un peu plus générique. –

1

Les exemples ci-dessous montrent deux manières d'exécuter du code R dans un script shell. Les deux exemples définiront également des fonctions sans les exécuter, si les scripts sont chargés dans une session R interactive via la fonction source().

Le premier exemple vous permet de donner des arguments comme vous le feriez pour tout autre shell script, mais ne passera pas supplémentaires R-options R (parce que RSCRIPT donne « --args » à R comme l'un des arguments) .

Le deuxième exemple vous permet de donner des options R supplémentaires, mais génère (inoffensif) des messages d'avertissement à moins que vous ne donniez "-args" comme l'un des arguments de script . Cette version est préférable d'éviter à moins que vous ayez des exigences spéciales.

prototype 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)) 
} 

prototype 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)) 
} 
Questions connexes