4.1 Základní datové typy
Data se skládají z jednotlivých hodnot. Každá taková hodnota má určitý datový typ. V R existuje mnoho základních typů dat. Pro datovou analýzu se však hodí především následující čtyři datové typy:
- logical může obsahovat jen dvě logické hodnoty:
TRUE
(“pravda”) aFALSE
(“nepravda”). Tyto hodnoty je možné zkrátit naT
aF
, ale výrazně se to nedoporučuje, protože zkrácená jménaT
aF
je možné předefinovat, po čemž by původně funkční kód dělal nepředvídatelné věci. - integer může obsahovat kladná i záporná celá čísla. Pokud je chcete zadat, musíte za číslo napsal
L
, tj. např.1L
. - double může obsahovat kladná i záporná reálná čísla. Když zadáte v konzoli nebo skriptu číslo bez příznaku
L
, bude v paměti reprezentované jako double, i když to bude shodou okolností celé číslo. V konzoli však R vypíše celá čísla inteligentně bez desetinných míst, i když jsou uložená v proměnné typu double. - character může obsahovat libovolný řetězec (text). V R se řetězce zadávají mezi dvěma uvozovkami nebo apostrofy. Uvozovky a apostrofy nelze kombinovat, tj. nejde jeden řetězec uvést uvozovkou a ukončit apostrofem. To umožňuje zadat apostrofy nebo uvozovky jako součást řetězce tak, že je např. řetězec uvozen i ukončen uvozovkami a uvnitř řetězce je použit apostrof. Jinou možností, jak zadat uvozovky, apostrofy a jiné zvláštní znaky, je “escapovat” je, tj. napsat je pomocí zpětného lomítka
\
a vybraného znaku (např.\"
znamená uvozovku,\n
konec řádku apod.).
## [1] TRUE
## [1] 1
## [1] 1
## [1] "Josef řekl: \"Miluji R!\""
Při zadávání reálných čísel se desetinná místa oddělují tečkou, ne čárkou.
## [1] 1.3
Čárky oddělují parametry ve funkcích – jinde způsobí chybovou hlášku!
## Error: <text>:1:2: unexpected ','
## 1: 1,
## ^
Reálná čísla jde zadat i pomocí tzv. “vědecké notace”, kde číslo před e
je mantisa, číslo za e
dekadický exponent:
## [1] 1300
## [1] 2.7e-05
R někdy reálná čísla takto samo vypisuje. Pokud chcete ovlivnit, jak bude reálné číslo vypsané, můžete použít funkci format()
(víc parametrů viz nápověda funkce):
## [1] "0.000027"
Mezi proměnnou typu integer a double je několik rozdílů. Hlavní z nich se týká přesnosti: typ integer sice umí zahrnout jen celá čísla, reprezentuje je však naprosto přesně. Naproti tomu typ double umí zahrnout i desetinná čísla (a také velmi velká čísla), reprezentuje je však pouze přibližně, takže v následujícím výpočtu vznikne chyba, i když velmi malá:
## [1] 4.440892e-16