Matice v jazyce R
S tímto tématem se setkáte na našich kurzech ExcelTown.
Aktuálně: kurzy můžete absolvovat jak online, tak prezenčně.
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 2x3 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á
S tímto tématem se setkáte na našich kurzech ExcelTown.
Aktuálně: kurzy můžete absolvovat jak online, tak prezenčně.