Cursus
Beheers for-loops en andere essentiële R-functies met onze introductiecursus R.
Loop over een vector
Als je weet hoe vaak je een actie wilt herhalen, is een for-loop een goede optie. Het idee van de for-loop is dat je een reeks stap voor stap doorloopt en bij elke stap een actie uitvoert. Die reeks is vaak een vector met getallen (zoals de reeks van 1:10), maar kan ook getallen bevatten die niet in volgorde staan, zoals c(2, 5, 4, 6), of zelfs een reeks tekens!
for (value in sequence) {
code
}
In woorden: "voor elke waarde in mijn reeks, voer deze code uit." Voorbeelden zijn: "voor elke rij van mijn data frame, print kolom 1", of "voor elk woord in mijn zin, controleer of dat woord DataCamp is."
Laten we een voorbeeld proberen! Eerst maak je een loop die de waarden print van een reeks van 1 tot en met 10. Daarna pas je die loop aan zodat hij ook de waarden van 1 tot en met 10 optelt, waarbij bij elke iteratie de volgende waarde in de reeks wordt toegevoegd aan de doorlopende som.
Instructies
Er is een vector seq voor je gemaakt. Vul de for-loop in met seq als je reeks. Print value tijdens elke iteratie. Er is een variabele sum voor je gemaakt. Gebruik de loop om de getallen in seq op te tellen. Bij elke iteratie moet value aan sum worden toegevoegd, waarna sum wordt geprint.
Als dat duidelijk is, ga dan door naar de volgende oefening! Zo niet, bekijk dan deze overzichtsvideo.
Overzichtsvideo over for-loops in R
Loop over rijen van een data frame
Stel dat je geïnteresseerd bent in de dagen waarop de aandelenkoers van Apple boven de 117 stijgt. Als deze boven deze waarde uitkomt, wil je de huidige datum en aandelenkoers printen. Als je een stock-dataframe hebt met een kolom date en een kolom met de prijs van apple, kun je dan over de rijen van het dataframe loopen om dit te doen? Zeker weten!
Voordat je dat doet: je kunt het aantal rijen in je dataframe opvragen met nrow(stock). Daarna kun je een reeks maken om over te loopen met 1:nrow(stock).
for (row in 1:nrow(stock)) {
price <- stock[row, "apple"]
date <- stock[row, "date"]
if(price > 117) {
print(paste("On", date,
"the stock price was", price))
}
}
[1] "On 2016-12-21 the stock price was 117.06"
[1] "On 2016-12-27 the stock price was 117.26"
Dit brengt een aantal dingen samen die we tot nu toe hebben geleerd. If-statements, subsetting van vectors, conditionals en loops! Gefeliciteerd met hoeveel je al hebt geleerd!
Instructies
stock staat in je werkruimte.
Vul de lege plekken in de for-loop in zodat het volgende klopt:
pricemoet de prijs van die iteratie bevattendatemoet de datum van die iteratie bevatten- Dit keer wil je weten of
appleboven de116uitkomt. - Als dat zo is, print dan de
dateen deprice. - Als het onder de
116bleef, print dan dedateen geef aan dat het geen belangrijke dag was!
Loop over matrixelementen
Tot nu toe heb je gelopen over eendimensionale datatypen. Als je over elementen in een matrix (kolommen en rijen) wilt loopen, moet je geneste loops gebruiken. Je gebruikt dit idee om de correlaties tussen drie aandelen te printen.
De eenvoudigste manier om hierover na te denken is dat je begint op rij 1 en naar rechts gaat, langs kolom 1, kolom 2, ..., tot en met de laatste kolom in rij 1. Daarna ga je naar beneden naar rij 2 en herhaal je het proces.
my_matrix
[,1] [,2]
[1,] "r1c1" "r1c2"
[2,] "r2c1" "r2c2"
# Loop over my_matrix
for(row in 1:nrow(my_matrix)) {
for(col in 1:ncol(my_matrix)) {
print(my_matrix[row, col])
}
}
[1] "r1c1"
[1] "r1c2"
[1] "r2c1"
[1] "r2c2"
Instructies
De correlatiematrix, corr, staat in je werkruimte.
- Print
corrom alvast naar de data te kijken. - Vul de geneste for-loop in! Deze moet aan het volgende voldoen:
- De buitenste loop moet over de
rows vancorrgaan. - De binnenste loop moet over de
cols vancorrgaan. - De printopdracht moet de namen van de huidige kolom en rij printen en ook hun correlatie.
- De buitenste loop moet over de
Bekijk ook onze Tutorial over loops in R.
