Slovník | Vyhledávání | Mapa webu
 
Základy informatiky pro biologyCvičebnice jazyka R Dokumentace k základním funkcím else

else

Strukturované příkazy

control {base} Dokumentace R v češtině

Popis

Jsou zde uvedeny základní konstrukce pro strukturované příkazy jazyka R. Fungují podobně jako strukturované příkazy jakéhokoliv jazyka vycházejícího z původního jazyka Algol. Všechny příkazy se řadí mezi tzv. rezervovaná slova.

Použití

if(cond) expr
if(cond) cons.expr else alt.expr

for(var in seq) expr
while(cond) expr
repeat expr
break
next

Argumenty

cond

Vektor typu logical o délce jedna, který neobsahuje NA. Podmínky, které jsou delnší než jedna, jsou akceptovány s varováním a je použit pouze jejich první prvek. Je-li proměnná prostředí _R_CHECK_LENGTH_1_CONDITION_ nastavená jako pravdivá, dojde k signalizaci chyby. Ostatní datové typy jsou převedeny, pokud je to možné, na logical. Třídy jsou ignorovány.

var

Syntaktický název proměnné.

seq

výraz, který je vyhodnocován jako vektor (může být i seznam či tzv. expression, což je seznam volání, symbolů apod.), pairlist nebo NULL. Faktor bude převeden na vektor řetězců.

expr, cons.expr, alt.expr

výraz ve formálním smyslu. Jedná se buď o jednoduchý výraz nebo o tzv. složeený výraz, obvykle ve tvaru { expr1 ; expr2 }.

Detaily

Příkaz break přeruší smyčku for, while i repeat; kontrola je v takovém případě převedena na první příkaz nacházející se mimo nejvnitřnější smyčku. next zastaví zpracovávání aktuální iterace a pokročí v indexu smyčky. break i next se týká pouze nejvnitřnější části vnořené smyčky.

Častou chybou je opomenutí vložení závorek ({ .. }) okolo příkazu, např. po if(..) nebo for(....). Abychom se vyhli chybě v syntaxi při vkládání if ... else konstrukce na klávesnici nebo přes source, je zvláště důležité nedávat nový řádek mezi } a else. Z toho důvodu je jedním (poměrně extrémním) z rysů defenzivního programování opakované používání závorek, např. u if klauzulí.

seq ve smyčce for je vyhodnocen na začátku smyčky; může se postupně měnit bez ovlivnění chodu smyčky. Pokud má seq délku nula, je tělo smyčky přeskočeno. V ostatních případech nabývá proměnná var postupně hodnoty každého prvku seq. Lze také zadat proměnné var hodnotu v rámci těla smyčky, ovšem následující iterace nebude tímto ovlivněna. Když je smyčka ukončena, var zůstane jako proměnná se svoji poslední nabytou hodnotou.

Hodnota

if navrátí hodnotu vyhodnoceného výrazu nebo neviditelně NULL, pokud nic neobsahoval (což se může stát, pokud není zadáno žádné else).

for, while a repeat navrátí neviditelně NULL. for nastaví var na poslední použitý prvek z seq, nebo na NULL, pokud bylo seq nulové délky.

break a next nenavrátí žádnou hodnotu. Pouze přenášejí kontrolu v rámci smyčky.

Reference

Becker, R. A., Chambers, J. M. a Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.

Příklady

for(i in 1:5) print(1:i)
for(n in c(2,5,10,20,50)) {
x <- stats::rnorm(n)
cat(n, ": ", sum(x^2), "n", sep = "")
}
f <- factor(sample(letters[1:5], 10, replace = TRUE))
for(i in unique(f)) print(i)

 
vytvořil Institut biostatistiky a analýz Lékařské fakulty Masarykovy univerzity