Zpět na přehled cvičení

Rkový skript ke stažení: R

Co si zde představíme?

Nastavení R-studia

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.")

R-kový skript

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.

Working directory

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.

Pracovní prostředí a jeho ukládání

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"

R projekt

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.

Instalace a používání knihoven

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},
##   }

Záložka Help

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)