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

&

Logické operátory

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

Popis

Tyto operátory lze použít u vektorů typu logical, raw a numeric.

Použití

! x
x & y
x && y
x | y
x || y
xor(x, y)

isTRUE (x)
isFALSE(x)

Argumenty

x, y

vektor typu raw, logical, numeric (tj. double, integer nebo complex) nebo objekty, for které byly vytvořeny příslušné metody.

Detaily

! značí logickou negaci.

& a && značí logické A, | a || se používá pro logické NEBO. Kratší verze provádí porovnání mezi všemi prvky, obdobně jako aritmetické operátory. Delší verze hodnotí pouze první prvek vektoru na levé straně vůči tomu na pravé. Vyhodnocování trvá, dokud není nalezen výsledek. Delší verze operátorů jsou vhodnější pro programování strukturovaných příkazů a typicky preferované u klauzulí if clauses.

xor značí operátor výhrady NEBO pro použití u všech prvků vektorů.

isTRUE(x) je stejné jako { is.logical(x) && length(x) == 1 && !is.na(x) && x }; analogicky je definovánoisFALSE(). Následkem toho může být vhodnjěší if(isTRUE(cond)) než if(cond) kvůli hodnotám NAs.
Ve starších verzích R, mělo isTRUE <- function(x) identical(x, TRUE) nevýhodu, že bylo nepravdivé např. u x <- c(val = TRUE).

Vektory typu numeric a complex budou převedeny na typ logical, kde nula bude znamenat nepravda a ostatní nenulové hodnoty pravda. Raw vektory jsou zpracovány bez převodu pro operátory !, &, | a xor, které jsou v tomto případě uplatněný pro všechny bity (tedy ! tvoří inverzní kód).

Operátory !, & a | jsou generické funkce: metody mohou být k nim vytvořeny individuálně či cestou skupinové generické funkce Ops (nebo S4 Logic, viz níže).

Hodnota NA je platný logický objekt. Může být součástí x nebo y. V případě NA & TRUE je výsledek NA, ovšem v případě NA & FALSE je výsledkem FALSE. Viz příklad dole.

Viz Syntax pro prioritu těchto operátorů: na rozdíl od ostatních jazyků (včetně S) operátory A, NEBO nemají stejnou prioritu (operátor A má vyšší prioritu než operátor NEBO).

Hodnota

U !je to vektor typu logical nebo raw (pro x typu raw) stejné délky jako x: názvy, dimenze a dimnames jsou převzaty z x stejně tak jako všechny další vlastnosti (včetně třídy), není-li udělán převod.

U |, & a xor je to vektor typu logical a raw. Pokud je poskytnutý vektor o délce nula, je také nulový i vektor ve výsledku. V ostatních případech jsou prvky krátšího vektoru používány znovu dle potřebys varováním, jdou-li použity znovu frakcionovaně). Pravidla pro nalezení vlastností výsledku jsou poněkud komplikovaná. Většina vlastností je převzatých z delšího vektoru, v případě stejné délky z prvního. Názvy jsou kopírovány z prvního vektoru, pokud má stejnou délku jako výsledek, v opačném případě z druhého vektoru. U časových řad jsou operátory povoleny pouze, pokud jsou řady kompatibilní, kdy vlastnosti třída a tsp jsou převzaty z kterékoliv série. Pro pole ( a výsledky se strukturou pole)jsou dimenze a dimnames brány z prvního argumentu, má-li strukturu pole, v opačném případě ze druhého.

U ||, && a isTRUE je logický vektor velikosti jedna.

S4 metody

!, & a | jsou generické S4 funkce, poslední dvě jsou součástí skupinově generických funkcí Logic (a tedy jsou pro tyto metody potřebné názvy argumentů e1, e2).

Poznámka

Operátory pro všechny prvky jsou někdy nazývané funkcemi, např. `&`(x, y): viz popis, jak je provedeno srovnání mezi argumenty v Ops.

Reference

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

Viz také

TRUE nebo logical.

any a all pro NEBO a A opeátory na více skalárních argumentech.

Syntax pro prioritu operátoru.

bitwAnd pro práci se všemi bity u vektoru typu integer.

Příklady

y <- 1 + (x <- stats::rpois(50, lambda = 1.5) / 4 - 1)
x[(x > 0) & (x < 1)] # všechny hodnoty x mezi 0 a 1
if (any(x == 0) || any(y == 0)) "zero encountered"

## sestavení pravdivostních tabulek:

x <- c(NA, FALSE, TRUE)
names(x) <- as.character(x)
outer(x, x, "&") ## tabulka A
outer(x, x, "|") ## tabulka NEBO

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