4.6 Srovnání čísel
Ke srovnání aritmetických hodnot slouží následující operátory: porovnání shody celých čísel (==
), různosti celých čísel (!=
), větší (<
), větší rovno (<=
), menší (>
) a menší rovno (>=
). Výsledkem srovnání je logická hodnota TRUE
nebo FALSE
:
## [1] FALSE
## [1] TRUE
## [1] TRUE
## [1] TRUE
## [1] FALSE
Srovnat stejnost nebo různost dvou reálných čísel není pomocí operátorů ==
a !=
možné. R sice srovnání provede, ale to nemusí mít žádný smysl, jak ukazuje následující příklad:
## [1] FALSE
Důvod je ten, že necelá čísla, která v desítkové soustavě vypadají nezáludně, není vždy možné vyjádřit dobře ve dvojkové soustavě a výsledek se proto zaokrouhluje. Proto přestože je výsledek předchozích operací v desítkové soustavě stejný (1/10), ve dvojkové soustavě dopadne jinak.
Ke srovnání dvou reálných čísel slouží následující fráze:
## [1] TRUE
Funkce all.equal()
vrací logickou hodnotu TRUE
, pokud jsou všechny prvky dvou vektorů stejné; jinak vrací komentář k velikosti rozdílů. Ovšem “jsou stejné” je v této funkci chápáno volně: dvě reálná čísla jsou stejná, pokud se neliší více než o několik násobků strojové přesnosti počítače. Funkce identical()
vrací logickou hodnotu TRUE
, pokud jsou dva objekty identické; jinak vrací FALSE
. Dohromady vrátí fráze hodnotu TRUE
jen v případě, kdy jsou obě téměř stejná (až na chybu, která zřejmě vznikla kvůli tomu, jak jsou reálná čísla v počítači uložená).
Balík dplyr nabízí ke srovnání hodnot typu double příjemnou funkci near()
## [1] TRUE