Inleiding Programmeren + R

Matrix

» Start

Matrix


Een matrix is een gegevensstructuur in de vorm van een tabel, met rijen en kolommen. Er kan maar 1 type waarden gelijktijdig in opgeslagen worden: getallen of karakters, maar niet beide tezamen (gebruik een dataframe als je getallen en karakters samen in een tabel wilt zetten).


Een matrix maken we met behulp van de functie matrix. 

> help(matrix)


> # de getallen 1 t/m 12 in 4 rijen en 3 kolommen.

> A<-matrix(1:12, nrow = 4, ncol = 3) 

> A 

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

[1,] 1 5 9 

[2,] 2 6 10 

[3,] 3 7 11 

[4,] 4 8 12


Net als een vector beschikt ook een matrix over de eigenschap lengte:

> length(A)

[1] 12

Daarnaast heeft een matrix de eigenschap dimensie:

    

    > dim(A)

    [1] 4 3     # A heeft 4 rijen en drie kolommen, en dus 2 dimensies !

    

Nu we kennis hebben gemaakt met de functie dim kunnen we ook op de volgende manier een matrix maken: :

    

    > # de twee opdrachten .. 

    > x <- 1:8 

    > dim(x) <- c(2,4) 

    > # .. hebben hetzelfde resultaat als de ene opdracht 

    > x <- matrix(1:8,2,4, byrow=F) 

    > x 

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

    [1,] 1 3 5 7 

    [2,] 2 4 6 8

    

Bij het gebruik van zowel de functie dim als de functie matrix wordt een matrix bij default kolomsgewijs opgevuld met de coordinaten van de vector. Bij gebruik van matrix kan deze  default worden doorbroken door het argument byrow=T mee te geven. 


Van een matrix kunnen we door middel van een indexeren bepaalde onderdelen selecteren:

> A[1,2]    # pak eerste rij, tweede kolom

[1] 5 

> A[1:2,2:3]    # pak de eerste 2 rijen, en daarvan kolom 2 en 3

[,1] [,2] 

[1,] 5 9 

[2,] 6 10 

> A[2,] #selecteer de tweede rij 

[1] 2 6 10

> A[,3] #selecteer de derde kolom 

[1] 9 10 11 12

En we kunnen door middel van indexeren ook elementen in een matrix vervangen door andere:

    

    > A[,3] <- 2  #  vervang alle getallen in de derde kolom door het getal 2

    > A[1,2] <- 5  # vervang het getal in de eerste rij en tweede kolom door het getal 5

    > A[2,] <- c(23,34,45) # vervang alle elementen in rij 2 door 3 nieuwe getallen


Labels


Ook aan de objecten in een matrix kunnen labels worden gekoppeld, maar dat gebeurt niet aan de afzonderlijke elementen zoals bij een vector, maar aan de rijen en kolommen. We gebruiken daarvoor de functies colnames en rownames.

> colnames(A) <- c('familie', 'geslacht', 'soort')

> rownames(A) <- c('v1', 'v2', 'v3', 'v4')

> A

familie geslacht soort

v1       1        5     9

v2       2        6    10

v3       3        7    11

v4       4        8    12

Die labels kunnen we net als bij vectoren gebruiken om delen uit de matrix te selecteren:

> A[,'familie']

v1 v2 v3 v4 

1  2  3  4