seasons <- c("Summer", "Fall", "Winter", "Spring")
# Only an exact member name passes
to_season <- function(name) {
if (!name %in% seasons) {
stop("unknown season: ", name)
}
factor(name, levels = seasons)
}
summer <- to_season("Summer")
# summer = Summer
cat("summer =", as.character(summer), "\n")
# An unknown name is an error
msg <- tryCatch(to_season("Sumer"),
error = conditionMessage)
cat("msg =", msg, "\n")
# msg = unknown season: Sumer