Stel dat we de volgende tabel hebben, in de variabele tabel:
## proefpersoon geslacht jaar geslaagd
## 1 CW V 13 0
## 2 AB V 3 1
## 3 PB M 28 1
## 4 SJ V 3 1
## 5 SH V 21 1
## 6 WP V 5 1
## 7 VR V 11 1
## 8 AR V 13 0
## 9 TW M 48 0
## 10 DW M 36 0
Een kolom van deze tabel is een vector:
tabel$jaar
## [1] 13 3 28 3 21 5 11 13 48 36
Daarom kun je een cel van een tabel net zo opvragen en wijzigen als een cel van een vector:
tabel$jaar [5]
## [1] 21
Maar je kunt een cel ook net zo opvragen en wijzigen als een cel van een matrix:
tabel [5, 3]
## [1] 21
En je kunt de kolommen adresseren met hun naam:
tabel [5, "jaar"]
## [1] 21
Door in het rij- en/of kolomveldje een boolean (TRUE of FALSE) te zetten, kun je een deeltabel maken, bijvoorbeeld iedereen voor wie “jaar” kleiner is dan 10:
tabel [tabel$jaar < 10, ]
## proefpersoon geslacht jaar geslaagd
## 2 AB V 3 1
## 4 SJ V 3 1
## 6 WP V 5 1
Dit werkt omdat (1) een booleanuitdrukking op een rijtje een rijtje booleans oplevert:
tabel$jaar < 10
## [1] FALSE TRUE FALSE TRUE FALSE TRUE FALSE FALSE FALSE FALSE
en omdat (2) je in het rij- of kolomveldje een rijtje booleans kunt zetten:
tabel [c(T,T,T,T,T,F,F,F,F,F), TRUE]
## proefpersoon geslacht jaar geslaagd
## 1 CW V 13 0
## 2 AB V 3 1
## 3 PB M 28 1
## 4 SJ V 3 1
## 5 SH V 21 1
Een rijtje getallen had ook gekund:
tabel [c(6,7,8), ]
## proefpersoon geslacht jaar geslaagd
## 6 WP V 5 1
## 7 VR V 11 1
## 8 AR V 13 0