1. ProgrammeringRHvordan oprettes en matrix i R

Af Andrie de Vries, Joris Meys

Du har to forskellige muligheder for at konstruere matrixer eller matriser. Enten bruger du skaberfunktionens matrix () og matrix (), eller du ændrer simpelthen dimensioner ved hjælp af dim () -funktionen.

Brug skaberfunktionerne i R

Du kan nemt oprette en matrix med funktionen array (), hvor du giver dataene som det første argument og en vektor med størrelserne på dimensionerne som det andet argument. Antallet af dimensionstørrelser i dette argument giver dig antallet af dimensioner. For eksempel opretter du en matrix med fire kolonner, tre rækker og to "tabeller" som denne:

> my.array <- matrix (1:24, dim = c (3,4,2))
> my.array
,, 1
   [, 1] [, 2] [, 3] [, 4]
[1,] 1 4 7 10
[2,] 2 5 8 11
[3,] 3 6 9 12
,, 2
   [, 1] [, 2] [, 3] [, 4]
[1,] 13 16 19 22
[2,] 14 17 20 23
[3,] 15 18 21 24

Denne matrix har tre dimensioner. Bemærk, at skønt rækkerne er angivet som den første dimension, udfyldes tabellerne kolonnevis. Så for arrays udfylder R søjlerne, derefter rækkerne og derefter resten.

Skift dimensionerne på en vektor i R

Alternativt kan du bare tilføje dimensioner ved hjælp af dim () -funktionen. Dette er et lille hack, der går lidt hurtigere end at bruge funktionen array (); det er især nyttigt, hvis du allerede har dine data i en vektor. (Dette lille trick fungerer også til at skabe matrixer, forresten, fordi en matrix ikke er mere end en matrix med kun to dimensioner.)

Sig, at du allerede har en vektor med numrene 1 til 24, som denne:

> my.vector <- 1:24

Du kan nemt konvertere den vektor til en matrix nøjagtigt som my.array ved blot at tildele dimensioner som denne:

> dim (my.vector) <- c (3,4,2)

Hvis du kontrollerer, hvordan my.vector ser ud nu, kan du se, at der ikke er nogen forskel fra arrayet my.array, som du oprettede før.

Du kan kontrollere, om to objekter er identiske ved hjælp af den identiske () -funktion. For at kontrollere for eksempel om my.vector og my.array er identiske, gør du blot følgende:

> identisk (my.array, my.vector)
[1] sandt