Frage an r, unix, shell, linux – Ausführen von r Skripten oder Befehlen mit Interpreter in Unix für Unix-Laien

13

Ich bin Unix-Laie und verwende R in Windows. Zum Beispiel gebe ich folgendes in meiner R-Sitzung (in R-GUI) ein.

# 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)

Wie kann ich dies in Unix-Shell in zwei Situationen erreichen -

(1) Direkt in der Befehlszeile über einen Interpeter (2) Erstellen eines Skripts und Ausführen eines Skripts.

Bitte geben Sie Schritt für Schritt an, da ich Laie zu Unix bin.

Ich schlage vor, Sie gehen durch dieR Dokumentation. Da hast du gute Anweisungen fürInstallation und z.B.Scripting. Maehler
Vielleicht solltest du R für Linux verwenden? Burton Samograd
Entschuldigen Sie die einfache Frage, was ist der Unterschied zwischen Linux und Unix R? Ich glaube, wir können R in Unix ausführen SHRram
Was hast du versucht? R sollte sich gut unter Unix oder Linux installieren lassen, und Sie können über die Befehlszeile mit darauf zugreifenR. Sie können sich auch einige der hervorragenden Guis ansehen (ich würde vorschlagen)RStudio als hervorragender Ausgangspunkt). Schließlich kann ein Skript einfach ausgeführt werden. Oft benutzt duR CMD BATCH script.R Es gibt jedoch viele Alternativen und Optionen, die gut dokumentiert sind. Justin

Deine Antwort

4   die antwort
1

Wenn Ihr Programm mit einem einzelnen Datensatz arbeiten soll, könnte simple-r die Lösung sein:

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

Es wurde speziell für die einfache statistische Analyse als Teil der Linux-Befehlszeile entwickelt. Wenn man zum Beispiel einige Daten plotten möchte, erledigt 'r -p data.txt' die Arbeit; Um den Korrelationskoeffizienten zu erhalten, genügt 'r cor data.txt'.

Wir haben ein paar Jahre zuvor / usr / bin / r für unser etwas allgemeineres Projekt gehackt. Dirk Eddelbuettel
1

Ich vermute, wie Sie Ihre Frage formuliert haben, dass Sie sich vielleicht in eine Linux-Maschine eingeschrieben haben? Oder dass Sie Ubuntu zum Beispiel auf Ihrem gewohnten Laptop / PC installiert haben.

Angenommen, es ist der zweite Fall: Öffnen Sie ein Terminal und geben Sie Folgendes einsudo apt-get install r-base. Dann tippeR. Dann tippe

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

Da geht es bei deiner Frage umunix gegenlinux eher, alsRSie könnten es auch versuchenhttp://unix.stackexchange.com. Über die Unterschiede zwischen Linux und Unix ist viel zu sagen, aber alles, was Sie wahrscheinlich wissen müssen, ist:Ubuntu herunterladen, brennen Sie es auf eine CD und starten Sie den Computer mit der CD in Ihrem CD-Laufwerk neu.

Hoffe das hilft.

Es istKleinbuchstaben R:sudo apt-get install r-base da alle Paketnamen in Kleinbuchstaben geschrieben sind. Dirk Eddelbuettel
Danke @DirkEddelbuettel. Fest. isomorphismes
1

Die folgenden Beispiele zeigen zwei Möglichkeiten zum Ausführen von R-Code in einem Shell-Skript. In beiden Beispielen werden auch Funktionen definiert, ohne sie auszuführen, wenn die Skripte über die Funktion source () in eine interaktive R-Sitzung geladen werden.

Im ersten Beispiel können Sie Argumente wie in jedem anderen Shell-Skript angeben, aber R werden keine zusätzlichen R-Optionen übergeben (da Rscript R als eines der Argumente "--args" gibt).

Im zweiten Beispiel können Sie zusätzliche R-Optionen angeben, es werden jedoch (harmlose) Warnmeldungen generiert, es sei denn, Sie geben "--args" als eines der Skriptargumente an. Diese Version wird am besten vermieden, es sei denn, Sie haben spezielle Anforderungen.

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

Angenommen, Sie speichern Ihr Skript in einer einfachen Textdatei mit dem Namenso.RSie können es unter Linux / Unix ausführen, indem Sie Folgendes eingebenR an der Eingabeaufforderung. Einmal in R eingeben

  source('so.R')

Ausführen des Skripts in der R-Umgebung (dies setzt voraus, dass sich die so.R-Datei in demselben Verzeichnis befindet, in dem Sie sich befinden, als Sie diesen Befehl absetzen).

Verwenden Sie den folgenden Befehl, um das Skript über die Linux / Unix-Befehlszeile auszuführen:

  R CMD BATCH so.R

Beachten Sie, dass der Plot angezeigt wird, wenn ich das Skript in R ausgeführt habe, aber in der Linux-Befehlszeile nicht angezeigt wird. Ich vermute, es wird schnell angezeigt und verschwindet dann. Es gibt also einen R-Befehl, nach dem Sie suchen müssen, um die Anzeige anzuhalten, nachdem der Plot angezeigt wurde.

Möglicherweise möchten Sie die eigentliche Skripterstellung als vordefiniert betrachtenRscript (kommt mit R) oder unserer älterenr (aus unserem Paket Littler). Die Verwendung vonR CMD BATCH ist zu Gunsten von Rscript veraltet. Wenn Sie es haben, ist r auch nett. Dirk Eddelbuettel

Verwandte Fragen