Matrices vergelijken
R's vermogen om met verschillende datastructuren te vergelijken stopt niet bij vectoren. Matrices en relationele operatoren werken ook naadloos samen!
In plaats van vectoren (zoals in het vorige voorbeeld) zijn de DataCamp- en YouTube-gegevens nu opgeslagen in een matrix genaamd views. De eerste rij bevat de DataCamp-informatie; de tweede rij de YouTube-informatie. Je gebruikt R's ingebouwde matrix-functie om een matrix te maken met de datacamp- en youtube-vectoren uit het vorige voorbeeld.
datacamp_views <- c(100,20,5,200,60,88,190,33,290,64)
youtube_views <- c(10,20,1000,64,100,9,19,3,90,4)
views <- matrix(c(datacamp_views, youtube_views), nrow = 2, byrow = TRUE)
views
| 100 | 20 | 5 | 200 | 60 | 88 | 190 | 33 | 290 | 64 |
| 10 | 20 | 1000 | 64 | 100 | 9 | 19 | 3 | 90 | 4 |
Laten we uitzoeken wanneer de views van zowel DataCamp als YouTube gelijk waren aan 20.
views == 20
| FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE |
| FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE |
Top! Je snapt nu hoe relationele operatoren werken. Laten we nu doorgaan met logische operatoren.
Logische operatoren
R helpt je de resultaten van relationele operatoren te combineren met de volgende logische operatoren:
AND-operator ( & )OR-operator ( | )NOT-operator ( ! )
Laten we elk van deze bekijken.
- AND-operator: Net als in andere programmeertalen neemt de AND-operator van R twee logische waarden en geeft alleen TRUE terug als beide waar zijn; anders geeft hij FALSE terug.
Laten we naar enkele vanzelfsprekende voorbeelden kijken.
TRUE & TRUE # 1.1 = 1
TRUE
TRUE & FALSE # 1.0 = 0
FALSE
FALSE & FALSE # 0.0 = 0
FALSE
FALSE & TRUE # 0.1 = 0
FALSE
Op vergelijkbare wijze kun je in plaats van logische waarden zoals hierboven ook de resultaten van comparators met deze operatoren gebruiken.
x <- 100
x < 200 & x >= 100 # omdat x kleiner is dan 200 en groter dan of gelijk aan 100, geeft dit TRUE terug.
TRUE
x < 200 & x > 100 # dit is FALSE, want de tweede vergelijking (x groter dan 100) is onwaar.
FALSE
- OR-operator: De OR-operator lijkt sterk op de AND-operator. Het enige belangrijke verschil is dat de OR-expressie TRUE is als ten minste een van de gebruikte logische waarden TRUE is.
Laten we naar enkele vanzelfsprekende voorbeelden kijken.
TRUE | TRUE # 1 + 1 = 1
TRUE
TRUE | FALSE # 1 + 0 = 0
TRUE
FALSE | FALSE # 0 + 0 = 0
FALSE
FALSE | TRUE # 0 + 1 = 0
TRUE
Laten we hetzelfde numerieke voorbeeld als hierboven gebruiken, maar dit keer zal het resultaat anders zijn.
x <- 100
x < 200 | x > 100 # dit is TRUE omdat de eerste vergelijking (x kleiner dan 200) waar is.
TRUE
- NOT-operator: Dit is de eenvoudigste operator om te begrijpen: hij negeert simpelweg de logische waarde waarop hij wordt toegepast, ofwel het tegenovergestelde van die logische waarde.
Kijk naar een paar voorbeelden!
a = 1
!a # dit geeft FALSE, want not van a wordt 0, en dat is FALSE.
FALSE
a = 0
!a # vergelijkbaar met het bovenstaande geeft dit TRUE, want a = 0 en not van a is 1.
TRUE
Hier zijn enkele gevallen waarin de NOT-operator handig kan zijn bij ingebouwde R-functies.
is.numeric(5) #geeft TRUE omdat 5 numeriek is
TRUE
!is.numeric(5) #not hiervan geeft FALSE
FALSE
is.numeric('aditya')
FALSE
Onderstaand voorbeeld is handig als je met een mix van numerieke en stringgegevens werkt en je de strings/karakters wilt wegfilteren, bijvoorbeeld uit een lijst, en alleen numerieke data wilt behouden.
!is.numeric('aditya')
TRUE
Tot slot: hoe werken logische operatoren op vectoren en matrices?
a <- c(FALSE, TRUE, FALSE)
b <- c(TRUE, TRUE, FALSE)
a & b # AND-operator
- FALSE
- TRUE
- FALSE
a | b # OR-operator
- TRUE
- TRUE
- FALSE
Op basis van de bovenstaande twee uitvoeren is het duidelijk dat, net als bij vectoren met relationele operatoren, logische operatoren ook elementgewijs opereren.
De NOT-operator kan echter maar op één vector tegelijk worden toegepast, of op het resultaat van twee vectoren.
!a
- TRUE
- FALSE
- TRUE
!b
- FALSE
- FALSE
- TRUE
In het onderstaande voorbeeld staat de NOT-operator buiten de haakjes, wat betekent dat hij wordt toegepast op het resultaat van a en b. Deze operator kun je ook een NOR-operator (Not-OR) noemen.
!(a | b) # NOR-operator
- FALSE
- FALSE
- TRUE
Voordat we doorgaan naar voorwaardelijke statements, doen we een kleine oefening.
Je hebt dezelfde DataCamp-tutorialviews in vectorvorm als hierboven. Laten we het laatste element eruit halen met R's tail-methode.
last <- tail(datacamp_views,1)
print (last)
[1] 64
Laten we nagaan of het laatste element onder 100 ligt of boven 100.
last < 100 | last > 100
TRUE
Omdat het laatste element onder 100 ligt, voldoet een van de expressies daaraan en dus is het resultaat TRUE.
Laten we doorgaan naar het laatste onderwerp van deze tutorial: voorwaardelijke statements!
Voorwaardelijke statements
Tot nu toe heb je geleerd over relationele operatoren, die aangeven hoe R‑objecten zich tot elkaar verhouden, en logische operatoren, waarmee je logische waarden kunt combineren. R biedt je een manier om al deze operatoren te combineren en het resultaat te gebruiken om het gedrag van je R-scripts te sturen. Daarmee gaan we aan de slag met de statements if en else.
De syntax van de if-voorwaarde is hieronder gedefinieerd: if(condition){ // expression } De if-statement neemt als invoer een voorwaarde (tussen haakjes) die je kunt relateren aan een relationele of logische operator en als die voorwaarde TRUE is, wordt de R‑code die bij de voorwaarde hoort (tussen accolades) uitgevoerd. Simpel toch?
Laten we dit met een voorbeeld begrijpen.
Stel dat je een variabele x hebt die gelijk is aan -10. Je zet nu een voorwaarde die controleert of x groter is dan nul en ontkent die met een NOT-operator. Omdat de voorwaarde TRUE is, wordt de R‑code binnen de accolades uitgevoerd.
x <- -10
if (!x > 0){
print("x is a negative number")
}
[1] "x is a negative number"
Als je de NOT-operator weglaat, wordt de voorwaarde FALSE en wordt de code binnen de accolades niet uitgevoerd.
if (x > 0){
print("x is a positive number")
}
Laten we nu de else-statement begrijpen met behulp van een syntax. if(condition){ // expression1 }else{ // expression2 } In tegenstelling tot de if-statement vereist de else-statement geen expliciete voorwaarde; hij moet in combinatie met de if-statement worden gebruikt. De R‑code die bij de else-statement hoort, wordt alleen uitgevoerd als de voorwaarde van de if-statement niet TRUE is.
Laten we hetzelfde if-voorbeeld gebruiken om de else-statement te begrijpen.
x <- -10
if (x > 0){
print("x is a positive number")
}else{
print("x is a negative number")
}
[1] "x is a negative number"
In het bovenstaande voorbeeld was de if-statement niet geldig, dus werd de else-statement uitgevoerd.
Net als bij if en else is er de else if-statement, die tussen if en else komt. Deze wordt uitgevoerd wanneer de if-voorwaarde niet voldaan is. Kort gezegd krijgt de else-statement de laatste prioriteit. if(condition){ // expression1 }else if(condition){ // expression2 }else{ // expression3 }
x <- 0
if (x > 0){
print("x is a positive number")
}else if (x == 0){
print("x is zero")
}else{
print("x is a negative number")
}
[1] "x is zero"
Een belangrijke reden om de else if-statement te gebruiken is wanneer de voorwaarden niet wederzijds uitsluitend zijn, wat betekent dat ze tegelijk waar kunnen zijn. Laten we dit met een voorbeeld bekijken.
x <- 12
if (x %% 3 == 0){
print("x is divisible by 3")
}else if (x %% 4 == 0){
print("x is divisible by 4")
}else{
print("x is neither divisible by 3 nor by 4")
}
[1] "x is divisible by 3"
In het bovenstaande voorbeeld werd de if-voorwaarde TRUE, dus verlaat R de controlstructuur en gaat niet naar de volgende statements, ook al zou de else if-voorwaarde ook TRUE opleveren. Had je in plaats van else if nog een if-statement gebruikt, dan was die ook uitgevoerd.
Conclusie
Gefeliciteerd met het afronden van de tutorial.
Deze tutorial was een goed startpunt voor beginners die nieuwsgierig zijn naar de programmeertaal R. Als goede oefening kun je de relationele en logische operatoren toepassen als voorwaarden in voorwaardelijke statements.
Er zijn nog onderwerpen in R te behandelen, zoals Utilities in R en Machine Learning met R, die in toekomstige tutorials aan bod komen. Blijf ons volgen!
Stel gerust vragen over deze tutorial in de reacties hieronder.
Wil je meer leren over R? Volg dan DataCamp's cursus Intermediate R.

Relationele operatoren
Relationele operatoren, ook wel
comparatorsgenoemd, helpen je te zien hoe het ene R-object zich verhoudt tot het andere R-object. Zo kun je bijvoorbeeld controleren of twee objecten gelijk zijn, wat je doet met het==-teken (dubbele gelijk). Een logische vergelijking die aan beide kanten TRUE is, geeft de logische waarde TRUE terug, omdat TRUE gelijk is aan TRUE, zoals hieronder getoond.Heb je echter aan de ene kant TRUE en aan de andere kant FALSE, dan krijg je als uitvoer de logische waarde FALSE.
Naast logische variabelen kun je ook de gelijkheid van andere typen controleren.
Laten we strings en getallen vergelijken.
inequality-operator (ongelijkheid), die wordt gegeven door het teken!=(een uitroepteken gevolgd door een gelijkteken).Alle voorwaarden die eerder FALSE opleverden, worden nu TRUE. Kijk maar!
Op vergelijkbare wijze kan de ongelijkheidsoperator ook worden gebruikt voor numerieke en andere R-objecten zoals matrices, vectoren en lijsten.
Wat als je wilt controleren welk van twee R-objecten groter of kleiner is dan het andere? Dat kan natuurlijk, met de tekens
<en>(kleiner-dan en groter-dan).Laten we eerst een numeriek voorbeeld bekijken.
Zoals je ziet, is het vanzelfsprekend waarom 2 niet groter is dan 10 of waarom -200 kleiner is dan 0. Maar hoe zit het met strings of karakters? Laten we zien hoe dat werkt.
Het lijkt erop dat R de alfabetische volgorde gebruikt om te bepalen welke string of welk karakter groter is dan het andere.
In het onderstaande voorbeeld komt
tnaRin de alfabetische volgorde; daarom istgroter danR.Belangrijk om te weten: in R en vrijwel alle programmeertalen wordt TRUE numeriek geïnterpreteerd als 1 en FALSE als 0. Op basis hiervan is TRUE dus groter dan FALSE.
(>=)(of kleiner dan of gelijk aan<=) een ander R‑object is. Hiervoor combineer je het groter‑dan of kleiner‑dan teken met een gelijkteken. Dit betekent dat als een van de twee voorwaarden (kleiner dan of gelijk aan / groter dan of gelijk aan) TRUE is, de volledige voorwaarde TRUE is.Je kunt meer leren over R-datatypen in deze DataCamp-tutorial. Die laat zien dat R prima overweg kan met lijsten, matrices en vectoren.
Kunnen de R-comparators ook R-vectoren aan? Laten we het uitzoeken.
Stel dat je een rijvector hebt met het aantal views dat je de afgelopen 10 dagen op je recente DataCamp-tutorial hebt gekregen. Je wilt nu weten op welke dagen je meer dan of gelijk aan 100 views kreeg. Je kunt hiervoor direct het groter-dan-teken gebruiken.
Zoals je in de bovenstaande uitvoer ziet, zijn voor de eerste, vierde, zevende en negende dag de resultaten TRUE; op die dagen waren de views meer dan of gelijk aan 100.
Op dezelfde manier kun je ook twee vectoren of zelfs twee matrices vergelijken.
Op deze manier kun je een eenvoudige toepassing maken om te bepalen wanneer je DataCamp-tutorialviews hoger waren dan je YouTube-videoviews, of andersom.
In R werkt dit elementgewijs: de twee vectoren worden per element vergeleken. In de onderstaande uitvoer zie je bijvoorbeeld dat het eerste element van de DataCamp-viewsvector 100 is, terwijl het andere vector 10 heeft; daarom is het resultaat TRUE.
Laten we snel twee numerieke uitdrukkingen vergelijken. Als je je basisschoolwiskunde herinnert, is er een regel bekend als BODMAS (of PEMDAS), die de volgorde aangeeft: haakjes, delen, vermenigvuldigen, optellen en aftrekken. Je gebruikt dezelfde regel om de onderstaande twee R‑expressies op te lossen.