The other issue is speed if you have to do more than a few. nirgrahamuk's answer takes 9.4 milliseconds while budugulo's answer takes 165.7 ms to run the code.
library(microbenchmark)
df <- tibble(age=sample(16:21, size=1000000, replace=T))
microbenchmark(
df %>% mutate(adult = case_when(age >= 18 ~ TRUE, age < 18 ~ FALSE)),
df %>% mutate(adult = age>=18),
times=50)