V tomto článku se podíváme, jak v jazyce R vytvořit matice a jak s nimi pracovat.

Matice je množina prvků uspořádaných do řádků a sloupců. Maticí o rozměru 2×3 chápeme matici, která má dva řádky a tři sloupce.

Příklad 1: Vytvoření matice

K vytvoření matice používáme funkci matrix. Prvním argumentem této funkce je výčet prvků, které má matice obsahovat. Dále musíme specifikovat rozměr matice: buď tedy funkci matrix zadáme požadovaný počet řádků argumentem nrow, nebo požadovaný počet sloupců argumentem ncol.

Představme si například, že chceme vytvořit matici s názvem mojeMatice, kde budou čísla od 1 do 20 poskládaná ve čtyřech řádcích (čili pěti sloupcích). Výčet prvků od 1 do 20 můžeme v R vytvořit příkazem seq(1, 20). Celý příkaz k vytvoření požadované matice tedy vypadá následovně:

> mojeMatice = matrix(seq(1,20), nrow = 4)

Příkaz může vypadat i následovně:

> mojeMatice = matrix(seq(1,20), ncol = 5)

V obou případech získáme následující matici.

> mojeMatice

     [,1] [,2] [,3] [,4] [,5]

[1,]    1    5    9   13   17

[2,]    2    6   10   14   18

[3,]    3    7   11   15   19

[4,]    4    8   12   16   20

Vidíme, že čísla se do matice „vkládají“ po sloupcích. Pokud bychom chtěli, aby se vkládala po řádcích (tedy například aby první řádek měl podobu 1 2 3 4 5), pak musíme do funkce matrix přidat volitelný argument byrow = TRUE.

Příklad 2: Operace s maticemi

S maticemi můžeme v R pochopitelně provádět všechny běžné operace. Pokud k matici přičteme nějaké číslo nebo ji nějakým číslem vynásobíme, aplikuje se tato operace na každý prvek matice jednotlivě. Například:

> mojeMatice * 2 

     [,1] [,2] [,3] [,4] [,5]

[1,]    2   10   18   26   34

[2,]    4   12   20   28   36

[3,]    6   14   22   30   38

[4,]    8   16   24   32   40

Kdybychom použili příkaz mojeMatice * mojeMatice, vynásobil by se tedy první prvek matice mojeMatice s prvním, druhý s druhým apod. Pokud bychom chtěli provést „skutečné“ násobení matic, je třeba operátor ohraničit procenty. Můžeme například vynásobit naši matici maticí k ní transponovanou takto:

> mojeMatice %*% t(mojeMatice) 

    [,1] [,2] [,3] [,4]

[1,]  565  610  655  700

[2,]  610  660  710  760

[3,]  655  710  765  820

[4,]  700  760  820  880

Vidíme, že transpozici provádíme funkcí t. Transpozice matice znamená prohození řádků a sloupců (první řádek matice je prvním sloupcem matice k ní transponované apod.).

Příklad 3: výběr z matice

Z matice můžeme chtít vybrat pouze určitý řádek, sloupec či prvek. Prvek na třetím řádku a ve druhém sloupci vybereme takto:

> mojeMatice[3,2]

[1] 7

Indexy prvku tedy zadáváme do hranatých závorek, a to tak, že prvním indexem je číslo řádku a druhým číslo sloupce.

Chceme-li zobrazit celý třetí řádek, postupujeme tak, že místo indexu sloupce necháme prázdné místo:

> mojeMatice[3, ]

[1]  3  7 11 15 19

 Analogicky získáme například druhý sloupec. Prázdný tentokrát zůstane index řádku.

> mojeMatice[ ,2]

[1] 5 6 7 8

Určitý prvek v matici můžeme změnit tak, že mu přiřadíme jinou hodnotu. Například prvek ve třetím řádku a druhém sloupci přepíšeme na hodnotu 1000 následovně:

< mojeMatice[3,2] = 1000

< mojeMatice

     [,1] [,2] [,3] [,4] [,5]

[1,]    1    5    9   13   17

[2,]    2    6   10   14   18

[3,]    3 1000   11   15   19

[4,]    4    8   12   16   20

Autor článku: Lenka Fiřtová