
Funkce a dávkové soubory
Programy v jazyce R, které si uživatel může sám vytvořit, lze rozdělit do dvou skupin - dávkové soubory a funkce. V následujících odstavcích si uvedeme hlavní rozdíly mezi nimi a způsoby, jak lze tyto programy vytvořit.
Hlavním rozdílem funkcí a dávkových souborů je ten, že objekty definované uvnitř funkce nejsou k dispozici v pracovním prostoru. U dávkových souborů nezáleží na tom, z jakého adresáře jsou volány, objekty definované uvnitř dávky jsou v pracovním prostoru stále k dispozici. Dalším rozdílem je ten, že funkce pracují se vstupními proměnnými, dávkové soubory nikoliv.
Funkce
Každá funkce v R, ať vestavěná nebo definovaná uživatelem, je tvaru
nazev <- function(argumenty){telo}
kde nazev udává název funkce, argumenty je čárkami oddělená posloupnost vstupních argumentů a telo obsahuje posloupnost příkazů, které musí být uzavřeny ve složených závorkách { } pouze v případě jediného příkazu mohou být složené závorky vynechány).
Funkce lze vytvářet přímo v příkazové řádce, při tvorbě složitějších zdrojových kódů je vhodnější místo příkazové řádky používat editory. Jazyk R má k dispozici zabudovaný vlastní editor, který najdeme v menu File New script. Možné je rovněž používat editory jako PSPad nebo WinEdt s číslovanými řádky, kontrolou syntaxe apod. Takto vytvořené funkce ukládáme do souboru s koncovkou .R.
V případě, že je funkce vytvořena přímo v příkazové řádce, spouští se zavoláním svého názvu nazev s argumenty uvedenými v kulatých závorkách. V případě, že je vytvořena v textovém editoru, je třeba nejdříve funkcí source() načíst soubor, ve kterém je uložena. Argumentem funkce source() je textový řetězec obsahující celý název souboru (i s koncovkou .R) nebo cestu k němu. Následně se spouští zavoláním názvu funkce nazev s argumenty uvedenými v kulatých závorkách.
Při volání funkce bez názvů argumentů musí být jednotlivé argumenty uvedeny přesně v tom pořadí, v jakém byly definovány. V opačném případě můžeme použít přiřazení nazev_argumentu=hodnota, popř. názvy argumentů můžeme zkracovat, jestliže zkratka nemůže znamenat žádný jiný argument. Hodnoty argumentů mohou mít definovány své implicitní hodnoty - ty lze příkazem nazev_argumentu=implicitni_hodnota nastavit v seznamu argumentů při definování funkce. Při volání funkce pak tyto argumenty mohou být vynechány a bude jim přidělena hodnota implicitni_hodnota.
Výstupní hodnoty získáme pomocí funkce return(), pouze k výpisu hodnot se používá funkce print(). V případě jediného výstupního objektu je tento objekt uváděn do argumentu funkce return(), v případě více výstupních objektů musí být seskupeny do seznamu.
Jazyk R rovněž umožňuje definování nových binárních operátorů (např. %in%). K odlišení od funkcí musí být jejich název ve tvaru "%nazev%".
> kvadr <- function(a, b, c){
+ obsah <- 2*(a*b + b*c + c*a)
+ objem <- a*b*c
+ return(list(obsah=obsah, objem=objem))}
> vystup <- kvadr(1, 2, 3)
> vystup
$obsah
[1] 22
|
Dávkové soubory
Jedná se o posloupnost příkazů, která může využívat již definovaných objektů z pracovního prostoru. Zpravidla se vytváří v libovolném textovém editoru, název souboru musí mít příponu .R (např. davka.R). Dávkové soubory se spouští funkcí source s názvem dávkového souboru (nebo cestou k němu) uvedeným jako textový řetězec (např. source("davka.R")).
> a <- 1; b <- 2; c <- 3
> source("kvadr.R") spuštění dávky kvadr.R
> obsah
[1] 2
> objem
[1] 6
|
Násilné ukončení běžící dávky nebo funkce se provádí příkazem Q.
V průběhu funkce nebo dávky se občas může stát, že se potřebujeme dostat zpět do pracovního prostoru, např. vypracování zadaných úkolů (viz cvičení) a následně dále pokračovat v běhu funkce či dávky. To lze příkazem browser(), k odlišení funkce či dávky a prostředí pracovního prostoru se prompt změní na Browse[1]>. Od této chvíle se nacházíme v pracovním prostoru, kde můžeme zadávat libovolné příkazy. Zpět se dostaneme příkazem c nebo klávesou ENTER.
MATLAB místo příkazu browser() používá keyboard, objevuje se prompt K>> a k návratu zpět do dávkového souboru používá příkaz return.
|
|