Loops and Apply
Vectorized Choices
ifelse
ifelse chooses values element by element. It avoids a loop when the same condition applies across a vector.
Program
Play the script to label three scores in one vectorized step.
ifelse_vector.R
Replay: real traced execution (multi-file project)
scores <- c(92, 71, 84)
labels <- ifelse(scores >= 80, "pass", "retry")
summary <- paste(labels, collapse = ",")
cat(summary, "\n", sep = "")
scores ← 92, 71, 84
1scores <- c(92, 71, 84)2labels <- ifelse(scores >= 80, "pass", "retry")values this step92, 71, 84scoreslabels ← pass, retry, pass
1scores <- c(92, 71, 84)2labels <- ifelse(scores >= 80, "pass", "retry")3summary <- paste(labels, collapse = ",")values this steppass, retry, passlabelsTRUE, FALSE, TRUEscores >= 80summary ← pass,retry,pass
2labels <- ifelse(scores >= 80, "pass", "retry")3summary <- paste(labels, collapse = ",")4cat(summary, "\n", sep = "")values this steppass,retry,passsummarypass, retry, passlabelscat(summary, " ", sep = "")
3summary <- paste(labels, collapse = ",")4cat(summary, "\n", sep = "")outputpass,retry,passvalues this steppass,retry,passsummary
Follow the Choices
scoresstarts asc(92, 71, 84).- R checks each score with
scores >= 80. 92and84choose"pass";71chooses"retry".pastejoins the labels intopass,retry,pass. | score |score >= 80| label | | --- | --- | --- | | 92 | TRUE | pass | | 71 | FALSE | retry | | 84 | TRUE | pass |
ifelse
`ifelse(test, yes, no)` chooses per position.
vectorized
One expression operates across the whole vector.
logical vector
`scores >= 80` supplies one `TRUE` or `FALSE` per score.
Exercise: ifelse_vector.R
Reproduce pass,retry,pass from the three scores, then change 71 to 80 and predict the joined labels before running it.