Project settings are easier to audit when defaults and overrides are explicit named values.

Program

Play the script to pick a runtime profile and see the final settings summary.

config_defaults.R
profile_index <- 
profiles <- c("dev", "test", "prod")
sample_sizes <- c(dev = 10, test = 100, prod = 1000)
profile <- profiles[profile_index]
sample_size <- sample_sizes[[profile]]
label <- paste(profile, sample_size, sep = ":")
cat(label, "\n", sep = "")
profile_index <- 
profiles <- c("dev", "test", "prod")
sample_sizes <- c(dev = 10, test = 100, prod = 1000)
profile <- profiles[profile_index]
sample_size <- sample_sizes[[profile]]
label <- paste(profile, sample_size, sep = ":")
cat(label, "\n", sep = "")
profile_index <- 
profiles <- c("dev", "test", "prod")
sample_sizes <- c(dev = 10, test = 100, prod = 1000)
profile <- profiles[profile_index]
sample_size <- sample_sizes[[profile]]
label <- paste(profile, sample_size, sep = ":")
cat(label, "\n", sep = "")
profile A profile selects one named set of settings.
named vector `sample_sizes[[profile]]` reads a setting by name.
configuration Keeping settings in data makes overrides explicit.