Slovník | Vyhledávání | Mapa webu
 
Základy informatiky pro biologyAnalýza dat v R Rozšířené základy R R jako programovací jazyk

Logo Matematická biologie

R jako programovací jazyk

R vznikl jako programovací jazyk pro analýzu dat a je směsí různých typů programovacích jazyků:

  • imperativních - obsahuje iterativní konstrukce (for, if, ...) - podobně jako C, Pascal...
  • funkcionálních - obsahuje lambda funkce a správu listů  - LISP
  • objektově orientovaných - obsahuje koncept objektu, metody, polymorfizmy - Python, C++...

To, že je R objektově orientovaný jazyk znamená, že pracuje s konceptem objektu a jeho třídy (object class) a s konceptem metod.

Zjednodušeně řečeno: R vytváří a manipuluje objekty (datové struktury - proměnné, číselné pole, znakové řetězce; funkce; komplexnější struktury ...)

Třída (class) je definice objektu. Obsahuje několik slotů, které obsahují informace specifické pro danou třídu. Každý objekt v R patří do nějaké třídy.

Výpočty jsou prováděny pomocí metod - to jsou specializované funkce, do kterých objekt vstupuje jako argument a které jsou určené pro práci se specifickými třídami objektů. Která metoda má být použita závisí na typu třídy objektu a toto rozhodování mají na starosti tzv. generické funkce. Generické funkce na základě třídy objektu přiřadí a aplikují správnou metodu, aniž by to koncový uživatel musel řešit. Mají tedy stejný název, ale v závislosti na typu objektu provedou různé úkony.

Generickými funkcemi jsou mnohé grafické funkce, například plot(), ale také sumarizační funkce summary(), str()... a mnohé jiné.

Fungování generických funkcí si ukážeme na příkladu funkce plot(), kterou aplikujeme na numerický vektor, tabulku a matici.

Vytvoříme vektor o délce 1000 z náhodného rozložení:

> set.seed(10) # tenhle příkaz zaručí, že výběr z rozložení v našem příkladu i ve Vašem počítači bude stejný.

> a = rnorm(1000)

> class(a)

[1] "numeric"

 

Vytvoříme tabulku

> b = as.table(UCBAdmissions[,,1])

Použili jsme první z kontingenčních tabulek v datovém souboru UCBAdmissions, který je součástí instalace R, není proto potřeba jej speciálně načítat.

> b

          Gender
Admit      Male Female
  Admitted  512     89
  Rejected  313     19

> class(b)

[1] "table"

Použijeme-li funkci plot() pro objekt a, který je numerickým vektorem, dostaneme x-y bodový graf, ve kterém osa x zobrazuje pořadí hodnot ve vektoru a osa y zase hodnoty vektoru a.

> plot(a)

Použijeme-li funkci plot() pro objekt b, který je třídy tabulka, dostaneme mozaikový graf, který vizualizuje poměry jednotlivých kategorií tabulky.

> plot(b)

Je důležité si uvědomit, že pouhým pohledem na strukturu objektu nelze vždy spolehlivě určit jeho třídu. Například kdybychom nepoužili funkci as.table(), první z kontingenčních tabulek datového souboru UCBAdmissions by zůstala maticí, i když vypadá jako tabulka:

> d = UCBAdmissions[,,1]

> d
          Gender
Admit      Male Female
  Admitted  512     89
  Rejected  313     19

> class(d)

[1] "matrix"

V případě vykreslení objektu d pomocí funkce plot()  je výsledkem bodový graf, ve kterém osa x představuje první sloupec a osa y druhý sloupec matice.

> plot(d)

Většina metod je napsána přímo v R, ale je možné začlenit procedury napsané v C, C+, Python, Fortran, Perl, Java...

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