1. ProgrammeringRHvordan lage en matrise i R

Av Andrie de Vries, Joris Meys

Du har to forskjellige alternativer for å konstruere matriser eller matriser. Enten bruker du skaperfunksjonene matrise () og matrise (), eller så endrer du ganske enkelt dimensjonene ved å bruke dim () -funksjonen.

Bruk skaperfunksjonene i R

Du kan enkelt opprette en matrise med array () -funksjonen, der du gir dataene som det første argumentet og en vektor med størrelsene på dimensjonene som det andre argumentet. Antall dimensjonsstørrelser i det argumentet gir deg antall dimensjoner. For eksempel lager du en matrise med fire kolonner, tre rader og to "tabeller" som dette:

> my.array <- matrise (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 matrisen har tre dimensjoner. Legg merke til at selv om radene er gitt som den første dimensjonen, er tabellene fylt kolonnevis. Så for matriser, fyller R kolonnene, deretter radene og deretter resten.

Endre dimensjonene til en vektor i R

Alternativt kan du bare legge til dimensjonene ved å bruke dim () -funksjonen. Dette er et lite hack som går litt raskere enn å bruke array () -funksjonen; Det er spesielt nyttig hvis du allerede har dataene i en vektor. (Dette lille trikset fungerer også for å lage matriser, forresten, fordi en matrise ikke er mer enn en matrise med bare to dimensjoner.)

Si at du allerede har en vektor med tallene 1 til 24, slik:

> my.vector <- 1:24

Du kan enkelt konvertere den vektoren til en gruppe nøyaktig som my.array ganske enkelt ved å tilordne dimensjoner, slik:

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

Hvis du sjekker hvordan my.vector ser ut nå, ser du at det ikke er noen forskjell fra matrisen my.array som du opprettet før.

Du kan sjekke om to objekter er identiske ved å bruke den identiske () -funksjonen. For å sjekke for eksempel om my.vector og my.array er identiske, gjør du ganske enkelt følgende:

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