Pytanie w sprawie shell, unix, linux, r – uruchamianie skryptów r lub poleceń z interpretatorem w Uniksie dla unix-layman

13

Jestem laikiem do unixa i sofar I używającym R w oknach. Na przykład wpisuję następujące po sobie w mojej sesji R (w 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)

Jak mogę to osiągnąć w powłoce unix, w dwóch sytuacjach -

(1) bezpośrednio w linii poleceń za pośrednictwem interpetera (2) tworząc skrypt i uruchamiając skrypt.

Proszę podać krok, biorąc pod uwagę, że jestem laikiem w unixie.

Co próbowałeś? R powinien ładnie instalować się na Uniksie lub Linuksie i możesz uzyskać do niego dostęp za pomocą linii poleceńR. Możesz również przyjrzeć się niektórym z dostępnych doskonałych guisów (sugerowałbymRStudio jako doskonały punkt wyjścia). Wreszcie uruchomienie skryptu można łatwo wykonać. Często używaszR CMD BATCH script.R ale istnieje wiele alternatyw i opcji, które są dobrze udokumentowane. Justin
Przepraszamy za proste pytanie: jaka jest różnica między linuxem a unixem R? Wierzę, że możemy uruchomić R w Uniksie SHRram
Może powinieneś użyć R dla Linuksa? Burton Samograd
Proponuję przejść przezR dokumentacja. Tam masz dobre instrukcjeinstalacja i np.skryptowanie. Maehler

Twoja odpowiedź

4   odpowiedź
1

powłoki. Oba przykłady będą również definiować funkcje bez ich wykonywania, jeśli skrypty zostaną załadowane do interaktywnej sesji R za pomocą funkcji source ().

Pierwszy przykład pozwala na podanie argumentów, tak jak w przypadku każdego innego skryptu powłoki, ale nie przekaże dodatkowych opcji R do R (ponieważ Rscript daje „--args” R jako jeden z argumentów).

Drugi przykład pozwala na podanie dodatkowych opcji R, ale generuje (nieszkodliwe) komunikaty ostrzegawcze, chyba że podasz „--args” jako jeden z argumentów skryptu. Tej wersji najlepiej unikać, chyba że masz specjalne wymagania.

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

rozwiązaniem może być proste-r:

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

Jest specjalnie zaprojektowany do prostej analizy statystycznej jako część linii poleceń Linuksa. Na przykład, jeśli chce się wykreślić jakieś dane, zadanie „r -p data.txt” wykona zadanie; dla uzyskania współczynnika korelacji wystarczy „r cor data.txt”.

Parę lat wcześniej wykonaliśmy / usr / bin / r dla naszego projektu Littler, który jest trochę bardziej ogólny. Dirk Eddelbuettel
25

że zapisujesz skrypt w prostym pliku tekstowym o nazwieso.R, możesz go uruchomić pod Linuksem / Unixem, wpisującR w wierszu polecenia. Po wejściu do R

  source('so.R')

aby wykonać skrypt w środowisku R (zakłada to, że plik so.R znajduje się w tym samym katalogu, w którym znajduje się użytkownik podczas wydawania tego polecenia).

Aby uruchomić skrypt z linii poleceń Linux / Unix, użyj następującego polecenia:

  R CMD BATCH so.R

Zwróć uwagę, że wykres został pokazany, gdy uruchomiłem skrypt wewnątrz R, ale z linii poleceń Linuksa nie widać. Podejrzewam, że zostanie szybko wyświetlony, a następnie zniknie, więc pojawi się polecenie R, które musisz sprawdzić, aby wstrzymać po wyświetleniu wykresu.

Możesz rozważyć rzeczywisty fronting skryptówRscript (pochodzi z R) lub nasz starszyr (z naszego pakietu littler). Sposób użyciaR CMD BATCH jest zaniedbany na rzecz Rscript. Jeśli masz to, r jest również miłe. Dirk Eddelbuettel
1

w jaki sformułowałeś swoje pytanie, że być może SSH został wprowadzony do komputera z Linuksem? Lub że zainstalowałeś Ubuntu, na przykład na zwykłym laptopie / komputerze.

Zakładając, że to drugi przypadek: otwórz terminal i wpiszsudo apt-get install r-base. Następnie wpiszR. Następnie wpisz

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

Ponieważ twoje pytanie dotyczyunix przeciwlinux zamiastR, możesz także spróbowaćhttp://unix.stackexchange.com. Jest wiele do powiedzenia na temat różnic między Linuksem i Uniksem, ale wszystko, co prawdopodobnie musisz wiedzieć, to:pobierz Ubuntu, nagraj go na dysk, a następnie uruchom ponownie komputer z dyskiem w napędzie CD.

Mam nadzieję że to pomoże.

Dzięki @DirkEddelbuettel. Naprawiony. isomorphismes
To jestmałe litery R:sudo apt-get install r-base ponieważ wszystkie nazwy pakietów są małe. Dirk Eddelbuettel

Powiązane pytania