Last chance! 50% off DataCamp Premium
Sale ends in
Matrixen zijn objecten waarvan de elementen in een tweedimensionale structuur staan, meestal numeriek, om allerlei berekeningen mee te doen.
Als voorbeeld bekijken we de matrix hieronder.
[,1] [,2] [,3]
[1,] 5 6 7
[2,] 8 9 10
[3,] 11 12 13
De bovenstaande matrix laat zien dat er 3 rijen en 3 kolommen zijn.
In R kun je een matrix maken met 'matrix()'.
De syntaxis van een matrix in R kun je als volgt definiëren:
matrix(value, nrow, ncol, byrow, dimnames)
De bovenstaande parameters voor de matrix zijn als volgt gedefinieerd:
Bekijk het onderstaande voorbeeld, waarin 'mat' de naam is van een matrix met vectorinvoer binnen c, met de waarden 8,4,5,6,7,9. Het bevat ook het aantal rijen, dus 'nrow' als twee en 'ncol' als drie, wat betekent dat de afmeting van de matrix 2 × 3 is. Ook zijn de elementen van de matrix rij voor rij ingevuld, wat betekent dat de waarden van de vectorinvoer rijgewijs worden geplaatst.
mat = matrix(c(8,4,5,6,7,9),nrow = 2, ncol = 3,byrow = TRUE)
print(mat)
De uitvoer van de bovenstaande code staat hieronder. Er zijn drie kolommen en twee rijen, en de elementen zijn rijgewijs ingevuld.
[,1] [,2] [,3]
[1,] 8 4 5
[2,] 6 7 9
Laten we een matrix maken met de elementen van 1 tot en met 9, met 3 rijen. Ook worden de rijen en kolommen benoemd met de vectorinvoer die een lijst van r1 tot r3 en c1 tot c3 bevat.
mat <- matrix(1:9, nrow = 3,dimnames = list(c("r1","r2","r3"), c("c1","c2","c3")))
mat
c1 c2 c3
r1 1 4 7
r2 2 5 8
r3 3 6 9
De bovenstaande uitvoer laat zien dat de elementen van 1 tot en met 9 kolomsgewijs zijn ingevuld. Ook zie je de rijen en kolommen gelabeld van r1 tot r3 en c1 tot c3.
De onderstaande matrix heet 'mat' en bestaat uit 3 rijen en 3 kolommen.
c1 c2 c3
r1 1 4 7
r2 2 5 8
r3 3 6 9
Om de bovenstaande elementen van een matrix afzonderlijk te benaderen, geef je de matrixnaam met een haakje erachter, met daarin de rijen en kolommen.
mat[2,2]mat[3,2]mat[,1]mat[2,]Voorwaarde: Voor matrixoptelling en -aftrekking moeten de matrixen dezelfde afmeting hebben: het aantal rijen en kolommen moet gelijk zijn. Bijvoorbeeld
De onderstaande matrixen mat1 en mat2 hebben dimensie 3 × 3, met 3 rijen en 3 kolommen, waarbij het aantal rijen en kolommen in beide matrixen gelijk is.
mat1 <- matrix(c(5,10,15,20,25,30,35,40,45), nrow = 3)
print(mat1)
mat2 <- matrix(c(50,55,60,65,70,75,80,85,90), nrow = 3)
print(mat2)
[,1] [,2] [,3]
[1,] 5 20 35
[2,] 10 25 40
[3,] 15 30 45
[,1] [,2] [,3]
[1,] 50 65 80
[2,] 55 70 85
[3,] 60 75 90
De bovenstaande matrixen zijn afgedrukt, waarbij elk element wordt getoond en de waarden kolomsgewijs zijn ingevuld.
add_output <- mat1 + mat2
cat("Addition","\n")
print(add_output)
sub_output <- mat1 - mat2
cat("Subtraction","\n")
print(sub_output)
Addition
[,1] [,2] [,3]
[1,] 55 85 115
[2,] 65 95 125
[3,] 75 105 135
Subtraction
[,1] [,2] [,3]
[1,] -45 -45 -45
[2,] -45 -45 -45
[3,] -45 -45 -45
De bovenstaande uitvoer van matrixoptelling en -aftrekking laat zien dat elk element van beide matrixen bij elkaar wordt opgeteld of van elkaar afgetrokken. Bij matrixoptelling wordt bijvoorbeeld het element op rij 1 en kolom 1, dus 5 in mat1, opgeteld bij het element op rij 1 en kolom 1 in mat2. Dat geeft als resultaat 55. Op dezelfde manier worden alle elementen verwerkt bij optellen en aftrekken om tot het bovenstaande resultaat te komen.
Voorwaarde: Voor matrixvermenigvuldiging en -deling moeten het aantal rijen en kolommen gelijk zijn. Met andere woorden: de dimensie moet gelijk zijn.
Bekijk het onderstaande voorbeeld waarin twee matrixen, mat1 en mat2, worden gebruikt met hetzelfde aantal rijen (drie) en kolommen (twee). Er zijn zes elementen in elke matrix, kolomsgewijs ingevuld, en de afmeting van elke matrix is 3 × 2.
mat1<- matrix(c(2,4,6,8,10,12), nrow = 3,ncol =2)
print(mat1)
mat2 <- matrix(c(14,16,18,20,22,24), nrow = 3,ncol=2)
print(mat2)
final <- mat1 * mat2
print('------------------')
cat("Multiplication","\n")
print(final)
[,1] [,2]
[1,] 2 8
[2,] 4 10
[3,] 6 12
[,1] [,2]
[1,] 14 20
[2,] 16 22
[3,] 18 24
-----------------
Multiplication
[,1] [,2]
[1,] 28 160
[2,] 64 220
[3,] 108 288
De bovenstaande uitvoer van matrixvermenigvuldiging laat zien dat elk element van mat1 en mat2 met elkaar wordt vermenigvuldigd. Zo wordt 'mat1[1][1]', dus 2, vermenigvuldigd met 'mat2[1][1]', dus 14, wat 28 oplevert. Op dezelfde manier wordt het proces voor elk element in beide matrixen gevolgd en tenslotte levert 'mat1[3][2]', dus 12, met 'mat2[3][2]', dus 24, het resultaat 288 op.
Bekijk het onderstaande voorbeeld waarin twee matrixen, mat1 en mat2, worden gebruikt met hetzelfde aantal rijen (drie) en kolommen (twee). Er zijn zes elementen in elke matrix, kolomsgewijs ingevuld, en de afmeting van elke matrix is 3 × 2.
mat1<- matrix(c(2,4,6,8,10,12), nrow = 3,ncol =2)
print(mat1)
mat2 <- matrix(c(14,16,18,20,22,24), nrow = 3,ncol=2)
print(mat2)
final <- mat1 / mat2
print('--------------')
cat("Division","\n")
print(final)
[,1] [,2]
[1,] 2 8
[2,] 4 10
[3,] 6 12
[,1] [,2]
[1,] 14 20
[2,] 16 22
[3,] 18 24
--------------
Division
[,1] [,2]
[1,] 0.1428571 0.4000000
[2,] 0.2500000 0.4545455
[3,] 0.3333333 0.5000000
De bovenstaande uitvoer van matrixdeling laat zien dat elk element van mat1 en mat2 door elkaar wordt gedeeld. Zo wordt 'mat1[1][1]', dus twee, gedeeld door 'mat2[1][1]', dus 14, wat 0.1428571 oplevert. Op dezelfde manier wordt het proces voor elk element in beide matrixen gevolgd en tenslotte levert 'mat1[3][2]', dus 12, met 'mat2[3][2]', dus 24, het resultaat 0.5000000 op.
Gefeliciteerd, je bent aan het einde van deze tutorial gekomen!
In deze tutorial leer je alles over de matrix in R, rijen en kolommen benoemen, elementen benaderen en rekenen zoals optellen, aftrekken, vermenigvuldigen en delen.
Wil je meer leren over R? Volg dan DataCamp's Introduction to R-cursus.
R-cursussen
Cursus
Cursus
Cursus

blog
Adel Nehme
15 min