Menu

Jak uruchomić skrypt R: Rscript, source() i RStudio

Wszystkie sposoby uruchamiania kodu R: interaktywna konsola, Rscript z wiersza poleceń, source() z wnętrza R oraz polecenia Run i Source w RStudio.

Na tej stronie są działające edytory: edytuj, uruchamiaj i od razu zobacz wynik.

Dwa sposoby korzystania z R: konsola i skrypt

R ma interaktywną konsolę (REPL: read, evaluate, print, loop, czyli wczytaj, oblicz, wypisz, powtórz): wpisujesz wyrażenie, a R od razu odpowiada. Wpisanie R w terminalu albo spojrzenie na dolny panel RStudio daje ci znak zachęty >, przy którym każda linia uruchamia się w chwili naciśnięcia Enter. W konsoli eksplorujesz: szturchasz dane, testujesz jedną linię, oglądasz wynik.

Skrypt R to po prostu zwykły plik tekstowy z kodem R, zapisany z rozszerzeniem .R. W skryptach analiza mieszka: to powtarzalny przepis, który każdy (także ty w przyszłości) może uruchomić od góry do dołu i dostać ten sam wynik.

Skrypt to nic egzotycznego. Oto kompletny skrypt, uruchom go:

Wszystko, co dalej, dotyczy różnych sposobów przekazania takiego pliku do R.

Rscript: uruchamianie pliku z wiersza poleceń

R instaluje narzędzie wiersza poleceń o nazwie Rscript, stworzone właśnie do tego. W terminalu, w folderze z twoim plikiem:

Rscript summary.R

R się uruchamia, wykonuje plik od góry do dołu, wypisuje to, co wypisuje skrypt, i kończy działanie. To podstawowe narzędzie automatyzacji: zadania cron, potoki danych, serwery, CI, czyli wszędzie tam, gdzie kod działa bez człowieka, który go pilnuje.

Jedno zachowanie każdego kiedyś zaskakuje: w konsoli wpisanie gołego wyrażenia, takiego jak avg, automatycznie wypisuje jego wartość. W Rscript gołe wyrażenie w funkcji albo pętli może niczego nie wypisać. Dlatego skrypty mówią wprost, o co im chodzi, przez jawne wywołania cat() lub print(). Wyrób sobie ten nawyk wcześnie.

source(): uruchamianie pliku z wnętrza R

Masz już otwartą sesję R i chcesz wykonać plik? Do tego służy source():

source("summary.R")

Każda linia pliku wykonuje się w bieżącej sesji, a wszystko, co skrypt zdefiniuje (zmienne, funkcje), zostaje dostępne później. Właśnie o to chodzi: przez source() ładujesz własne funkcje pomocnicze do sesji interaktywnej.

Domyślnie source() działa po cichu, poza jawnym wypisywaniem. Żeby obserwować jej działanie, wyświetlaj każdą linię podczas wykonywania:

source("summary.R", echo = TRUE)

Zwróć uwagę na ścieżkę względną: "summary.R" oznacza „w bieżącym katalogu roboczym”, a to, gdzie on jest, zależy od sposobu uruchomienia R. Gdy source() albo read.csv() w tajemniczy sposób nie może znaleźć pliku, który jest tuż obok, winowajcą jest prawie zawsze katalog roboczy. Zobacz artykuł o katalogu roboczym.

Uruchamianie skryptów w RStudio

RStudio daje ci oba tryby w postaci dwóch poleceń, a różnicę między nimi warto dobrze zrozumieć:

  • Run (Ctrl+Enter, Cmd+Enter na macOS): wykonuje w konsoli bieżącą linię albo zaznaczony fragment. To bieg do eksploracji: napisz linię, uruchom, popatrz, popraw.
  • Source (przycisk Source albo Ctrl/Cmd+Shift+S): wykonuje cały plik, dokładnie jak source() w konsoli.

Pułapka uruchamiania linia po linii przez Run polega na tym, że sesja konsoli gromadzi stan: zmienne z linii, które potem zmieniono albo usunięto, wciąż żyją, więc skrypt „działa” u ciebie, a u wszystkich innych nie. Uczciwy test skryptu to Source w świeżej sesji (Session → Restart R, a potem Source). Jeśli to przetrwa, jest powtarzalny.

Skrypt jako plik wykonywalny (macOS / Linux)

W systemach uniksowych możesz zamienić skrypt R we własne polecenie. Umieść linię shebang na samej górze pliku:

#!/usr/bin/env Rscript
cat("I am a self-running R script\n")

Potem raz oznacz plik jako wykonywalny i uruchamiaj go bezpośrednio:

chmod +x summary.R
./summary.R

Shebang mówi powłoce, który interpreter uruchamia plik; env Rscript znajduje Rscript wszędzie tam, gdzie leży w PATH danego komputera. Ponieważ linia zaczyna się od #, sam R czyta ją jako komentarz i ignoruje.

Przekazywanie argumentów do skryptu

Prawdziwe skrypty przyjmują dane wejściowe (nazwę pliku, datę, próg) podawane po nazwie skryptu:

Rscript report.R sales.csv 2026

Wewnątrz skryptu commandArgs(trailingOnly = TRUE) zwraca twoje argumenty jako wektor tekstowy (trailingOnly = TRUE pomija wewnętrzne argumenty interpretera; praktycznie zawsze tego chcesz):

# report.R
args <- commandArgs(trailingOnly = TRUE)

input_file <- args[1]
year <- as.numeric(args[2])

cat("Reading:", input_file, "\n")
cat("Filtering to year:", year, "\n")

Wszystko przychodzi jako tekst, "2026", a nie 2026, więc przed obliczeniami przekształć wartości przez as.numeric(). Logikę parsowania możemy zasymulować w wersji do uruchomienia:

Którego sposobu użyć?

  • Eksploracja danych, testowanie pomysłów → konsola albo Run w RStudio.
  • Wykonanie całej analizy → Source w RStudio albo Rscript w terminalu.
  • Załadowanie funkcji pomocniczych do sesji → source("helpers.R").
  • Automatyzacja, harmonogramy, potoki → Rscript, z commandArgs() do danych wejściowych.

Składnia tego, co trafia do środka tych plików, to temat następnej lekcji. Zobacz artykuł o składni R.

Najważniejsze informacje

  • Konsola służy do eksploracji; pliki skryptów .R do powtarzalnej analizy.
  • Rscript file.R uruchamia skrypt z wiersza poleceń; source("file.R") uruchamia go w sesji (dodaj echo = TRUE, żeby obserwować).
  • W RStudio Run wykonuje linię, a Source cały plik. Source w świeżej sesji to prawdziwy test powtarzalności.
  • #!/usr/bin/env Rscript + chmod +x sprawia, że skrypt można uruchamiać bezpośrednio; commandArgs(trailingOnly = TRUE) odczytuje jego argumenty jako tekst.

Dalej: składnia R, czyli przypisanie przez <-, wywołania funkcji i zasada, że wszystko jest wektorem.

Najczęściej zadawane pytania

Jak uruchomić skrypt R z wiersza poleceń?

Użyj polecenia Rscript, które jest dołączone do R: Rscript analysis.R. Uruchamia plik od początku do końca i wypisuje wszystko, co wypisuje skrypt. To standardowy sposób uruchamiania R w zaplanowanych zadaniach, potokach danych i na serwerach.

Czym różni się Run od Source w RStudio?

Run (Ctrl/Cmd+Enter) wykonuje w konsoli tylko bieżącą linię albo zaznaczenie, co jest idealne podczas eksploracji. Source wykonuje cały plik za jednym razem, tak jak zrobiłby to Rscript. Uruchomienie skryptu przez Source w czystej sesji to prawdziwy test, że działa od góry do dołu.

Co robi source() w R?

source("script.R") czyta plik i wykonuje każdą jego linię w bieżącej sesji R, więc wszystkie zdefiniowane w nim zmienne i funkcje stają się dla ciebie dostępne. Dodaj echo = TRUE, żeby dodatkowo wypisywać każdą linię podczas wykonywania.

Jak przekazać argumenty do skryptu R?

Uruchom Rscript script.R value1 value2, a potem odczytaj je w skrypcie przez args <- commandArgs(trailingOnly = TRUE). Część trailingOnly = TRUE usuwa wewnętrzne argumenty interpretera i zostawia tylko twoje. Wszystko przychodzi jako tekst, więc liczby przekształć przez as.numeric().

Ilustracja języków programowania w Coddy

Ucz się programowania z Coddy

ZACZNIJ