Rkový skript ke stažení: R
Co si zde představíme?
Na cvičeních naživo projdeme detailně. Zde jen vypsané v bodech to nejdůležitější:
Sys.getlocale(category = "LC_ALL") # jaké je současné nastavení lokality
# Sys.setlocale('LC_ALL', "en") # ukázka, jak to vypadá, když je jen angličtina
print("Příliš žluťoučký kůň úpěl ďábelské ódy.") # kontrolní česká věta se všemi diakritickými znaménky
Sys.setlocale('LC_ALL', 'Czech') # přenastavení lokality na Česko
print("Příliš žluťoučký kůň úpěl ďábelské ódy.")
Sys.setlocale('LC_ALL', 'Czech.utf8') # nastavení kódování na UTF-8
print("Příliš žluťoučký kůň úpěl ďábelské ódy.")
Základní dokument pro uložení výpočetních příkazů, který se ukládá
jako textový soubor se zakončením .R
Co řádek to jeden příkaz (není nutné zakončit středníkem):
a <- 10 # do proměnné pojmenované a přiřazujeme hodnotu 10
print(a) # komentář do konce řádku za symbolem #
## [1] 10
Do řádku lze vložit více příkazů (nutno oddělit středníkem, ale nedoporučuji):
a = "Toto je string"; print(a) # symbol = taky funguje pro přiřazení
## [1] "Toto je string"
Lze definovat více proměnných stejnou hodnotou:
a <- b <- c <- 10
Vícero příkazů, které chceme provést společně, lze obložit složenými závorkami:
{
a = 10
A = 15
a <- a + A
print(a); print(A) # v názvu proměnných se rozlišují velká a malá písmena
}
## [1] 25
## [1] 15
Jednotlivé řádky kódu můžeme psát rovnou do okna Console, ale pomocí stisku kláves Ctrl+Enter spustíme současnou řádku ve skriptu, i když se třeba rozprostírá přes několik řádek (díky našemu globálnímu nastavení):
lide <- c("Arnold", # komentář lze vložit i sem, ale může překážet
"Beata",
"Cyril") # funkce "combine" c() sdružuje do vektoru
Celý skript či případně zrovna vybraná část kódu lze spustit stisknutím tlačítka Run v horní liště skriptu.
Alternativní způsoby vypsání hodnoty proměnné:
print(pi, digits = 3) # umožňuje upřesnit počet platných číslic aj. (pi je vnitřní proměnná obsahující Ludolfovo číslo)
## [1] 3.14
lide # defaultní print již uložené proměnné
## [1] "Arnold" "Beata" "Cyril"
(archimedova_aproximace_pi <- 22/7) # vytištění hned při přiřazení
## [1] 3.142857
Delší komentáře přes několik řádků nemají svůj vlastní symbol, ale lze zakomentovat (a odkomentovat) několik řádků naráz pomocí kombinace Ctrl+Shift+C:
# a <- log("char") # logaritmus ze stringu?
# a
# # to asi byla chyba a nic se s a nestalo
Další užitečná zkratka je Ctrl+F, která otevře lištu pro vyhledávání a nahrazování částí textu v rámci skriptu.
Rádi bychom si uložili náš nový skript a později jej měli po ruce na otevření. Je vhodné si určit adresář, do kterého budeme ukládat všechny naše výtvory, např. vše, co se týče tohoto cvičení, a ten si nastavit jako výchozí adresář pro ukládání a načítání.
Lze to udělat manuálně pomocí záložky Session > Set Working Directory > Choose Directory.
Ale také to lze udělat pomocí následujících příkazů
getwd() # zjisti mi jaké je současné working directory
## [1] "M:/Vyuka/Rko/cviceni"
setwd("M:/Vyuka/Rko/cviceni/") # doplťe si cestu k vlastnímu adresáři a nastavte jej jako working directory
Odteď, když budete volat
(source()
,load()
,…) či ukládat
soubory(save()
,png()
,…), tak systém bude
předpokládat tento adresář, neurčíte-li jinak.
V záložce Environment lze nalézt seznam všech právě zadefinovaných proměnných včetně typů a obsahu.
Existuje pár příkazů, které s prostředím přímo interagují:
ls() # seznam všech proměnných
## [1] "a" "A" "archimedova_aproximace_pi"
## [4] "b" "c" "lide"
ls(pattern = "a") # všechny proměnné obsahující "a"
## [1] "a" "archimedova_aproximace_pi"
ls(pattern = "^a") # všechny proměnné začínající na "a"
## [1] "a" "archimedova_aproximace_pi"
ls.str() # výpis všech proměnných s více podrobnostmi
## a : num 25
## A : num 15
## archimedova_aproximace_pi : num 3.14
## b : num 10
## c : num 10
## lide : chr [1:3] "Arnold" "Beata" "Cyril"
str(a) # detail konkrétní proměnné
## num 25
Libovolné proměnné se dají uložit do .RData
či
.rda
souboru:
save(a, file = "a.RData") # ulož jednu proměnnou do souboru "a.RData" (koncovka nutná)
a = 99
save(list = c("a", "A"), # ulož více proměnných (zadávat ve stringové podobě)
file = "aA.RData") # do jednoho souboru "aA.RData"
save.image() # uloží celé prostředí do souboru pojmenovaného ".RData"
Nepotřebujeme-li už nějakou proměnnou (a zbytečně nám zabírá paměť), můžeme ji z prostředí vymazat:
remove(a, A) # odstraň proměnné a, A
rm(list = ls()) # rm=remove, vymaž celé prostředí
Uložené výpočty si můžeme do Rka znovu nahrát:
load("a.RData") # původní hodnota a
a
## [1] 25
load("aA.RData") # při shodě jmen proměnných přemaže!
a; A
## [1] 99
## [1] 15
load(".RData") # nahraje celé prostředí v ".RData"
Pracujeme-li na něčem obsáhlejším - materiály k jednomu předmětu, bakalářka, diplomka, R-kový balíček, … je dobré si celou práci v adresáři sjednotit do jednoho projektu.
Nový projekt se založí pomocí File > New Project. Je možnost vytvořit
To do patřičného adresáře vytvoří soubor s příponou
.Rproj
, který vše drží pohromadě.
Při zavření RStudia se Vás to zeptá, zda se přejete uložit prostředí pro pokračování jindy.
Mezi projekty se dá přepínat v horní liště. S přepnutím projektu se přenastaví working directory, otevřou se dokumenty a nahraje se prostředí, v takovém stavu, v jakém s ním bylo skončeno.
Rko samo o sobě pracuje jen s funkcemi zahrnutými v základní výbavě:
base
, graphics
, methods
,
stats
, utils
. Ale myšlenka softwaru je volné
sdílení výpočetního kódu mezi statistiky napříč světem. Každý takový
přispěvatel vytvoří svou vlastní knihovnu funkcí s dokumentací. Za ta
léta provozu se ale množství knihoven pohybuje okolo (přes 20000 okolo
roku 2023) a neustále roste. Je nemožné mít dostupné všechny a všude,
jejich funkcionalita se může často křížit. Proto je na uživateli, jaké
knihovny si stáhne do svého počítače.
Stáhnutí knihovny se dá provést pomocí následujícího příkazu
install.packages("mixAK") # nainstaluje knihovnu mixAK z nastaveného CRANu
install.packages(c("MASS", "readxl")) # nainstaluje více knihoven zároveň
Lze provést také manuální vyhledávání dostupných knihoven:
Packages > Install. Zde se primárně stahují balíčky z
dostupných CRANů. Existují ovšem výjimky, kdy se celý balíček musí
manuálně stáhnout v .tar.gz
podobě a nainstalovat přímo ze
staženého souboru. Nebo lze použít i internetový odkaz:
install.packages("https://www2.karlin.mff.cuni.cz/~komarek/vyuka/2021_22/nmsa407/R/mffSM_1.2.tar.gz", repos = NULL)
Někdy na sobě balíčky závisí a případné Dependencies se dostahují automaticky s tím.
Po stažení ale balíček zůstává stále neaktivní. Pro aktivní užívání nějaké knihovny je třeba ji nejprve zpřístupnit pro danou session:
# mvrnorm(3, mu = c(0,0), Sigma = diag(2)) # nefunguje před zavoláním knihovny
library(MASS) # zpřístupní funkce v knihovně
mvrnorm(3, mu = c(0,0), Sigma = diag(2)) # generuje 3 vzorky z dvourozměrného normálního rozdělení
## [,1] [,2]
## [1,] 0.2221126 0.4304231
## [2,] -0.4996629 -0.5348799
## [3,] -1.3257289 0.7337697
detach("package:MASS") # odepře funkce z dané knihovny
# mvrnorm(3, mu = c(0,0), Sigma = diag(2)) # opět nezná funkci mvrnorm
MASS::mvrnorm(3, mu = c(0,0), Sigma = diag(2)) # zavolá funkci z konkrétního balíčku, aniž by jej celý načetl
## [,1] [,2]
## [1,] -1.3946524 0.6292996
## [2,] 0.7369334 1.3654105
## [3,] -1.2324448 -0.4085866
Lze také zpřístupnit/zamezit knihovnu kliknutím na příslušný řádek v záložce Packages.
Knihovnu lze odinstalovat pomocí následujícího příkazu:
remove.packages("MASS") # odinstalování knihovny (nemusí odinstalovat dependencies)
Uprostřed funkcí se spíše používá nahrávání pomocí funkce
require
, která navíc vrací informaci o dostupnosti balíčku
s případným warningem, pakliže knihovna není dostupná.
require("MASS") # jen warning
library("MASS") # vrací error
Chcete-li poděkovat autorům citací ve Vaší práci, je možné tak jednoduše učinit pomocí:
citation()
## To cite R in publications use:
##
## R Core Team (2025). _R: A Language and Environment for Statistical Computing_. R Foundation for
## Statistical Computing, Vienna, Austria. <https://www.R-project.org/>.
##
## A BibTeX entry for LaTeX users is
##
## @Manual{,
## title = {R: A Language and Environment for Statistical Computing},
## author = {{R Core Team}},
## organization = {R Foundation for Statistical Computing},
## address = {Vienna, Austria},
## year = {2025},
## url = {https://www.R-project.org/},
## }
##
## We have invested a lot of time and effort in creating R, please cite it when using it for data
## analysis. See also 'citation("pkgname")' for citing R packages.
print(citation("mixAK"), bibtex = TRUE)
## To cite the package mixAK in publications use either of the following articles:
##
## Komárek A, Komárková L (2014). "Capabilities of R Package mixAK for Clustering Based on
## Multivariate Continuous and Discrete Longitudinal Data." _Journal of Statistical Software_,
## *59*(12), 1-38. doi:10.18637/jss.v059.i12 <https://doi.org/10.18637/jss.v059.i12>.
##
## A BibTeX entry for LaTeX users is
##
## @Article{,
## title = {Capabilities of {R} Package {mixAK} for Clustering Based on Multivariate Continuous and Discrete Longitudinal Data},
## author = {Arnošt Komárek and Lenka Komárková},
## journal = {Journal of Statistical Software},
## year = {2014},
## volume = {59},
## number = {12},
## pages = {1--38},
## doi = {10.18637/jss.v059.i12},
## }
##
## Komárek A (2009). "A New R Package for Bayesian Estimation of Multivariate Normal Mixtures
## Allowing for Selection of the Number of Components and Interval-Censored Data." _Computational
## Statistics & Data Analysis_, *53*(12), 3932-3947. doi:10.1016/j.csda.2009.05.006
## <https://doi.org/10.1016/j.csda.2009.05.006>.
##
## A BibTeX entry for LaTeX users is
##
## @Article{,
## title = {A New {R} Package for {B}ayesian Estimation of Multivariate Normal Mixtures Allowing for Selection of the Number of Components and Interval-Censored Data},
## author = {Arnošt Komárek},
## journal = {Computational Statistics \& Data Analysis},
## year = {2009},
## volume = {53},
## number = {12},
## pages = {3932--3947},
## doi = {10.1016/j.csda.2009.05.006},
## }
Nejužitečnější záložkou je rozhodně Help! Vždy, když pracujete s nějakou novou funkcí, vždy si ji prohlédněte v helpu! Každá funkce má svou vlastní stránku s přesně danou strukturou, kterou musí každý autor balíčku řádně sepsat podle předem dané šablony. Vysvětluje vždy následující:
Na stránku helpu se lze dostat i pomocí následujících příkazů:
?mffSM::plotLM
?ls
help(setwd)
help(help)