Project Organization
Script Order
Numbered Steps
Small projects often use numbered scripts so data import, cleaning, modeling, and reporting run in a predictable order.
Program
Play the script to choose how many steps the project includes.
script_order.R
Replay: real traced execution (multi-file project)
steps <- c("import", "clean", "model", "report")
step_count <- 3
selected <- steps[seq_len(step_count)]
numbers <- sprintf("%02d", seq_along(selected))
scripts <- paste0(numbers, "_", selected, ".R")
label <- paste(scripts, collapse = ">")
cat(label, "\n", sep = "")
steps <- c("import", "clean", "model", "report")
step_count <- 2
selected <- steps[seq_len(step_count)]
numbers <- sprintf("%02d", seq_along(selected))
scripts <- paste0(numbers, "_", selected, ".R")
label <- paste(scripts, collapse = ">")
cat(label, "\n", sep = "")
steps <- c("import", "clean", "model", "report")
step_count <- 4
selected <- steps[seq_len(step_count)]
numbers <- sprintf("%02d", seq_along(selected))
scripts <- paste0(numbers, "_", selected, ".R")
label <- paste(scripts, collapse = ">")
cat(label, "\n", sep = "")
steps ← import, clean, model, report
1steps <- c("import", "clean", "model", "report")2step_count <- 3values this stepimport, clean, model, reportstepsstep_count ← 3
1steps <- c("import", "clean", "model", "report")2step_count <- 33selected <- steps[seq_len(step_count)]values this step3step_countselected ← import, clean, model
2step_count <- 33selected <- steps[seq_len(step_count)]4numbers <- sprintf("%02d", seq_along(selected))values this stepimport, clean, modelselected3step_countnumbers ← 01, 02, 03
3selected <- steps[seq_len(step_count)]4numbers <- sprintf("%02d", seq_along(selected))5scripts <- paste0(numbers, "_", selected, ".R")values this step01, 02, 03numbers3 stepsselectedscripts ← 01_import.R, 02_clean.R, 03_model.R
4numbers <- sprintf("%02d", seq_along(selected))5scripts <- paste0(numbers, "_", selected, ".R")6label <- paste(scripts, collapse = ">")values this step01_import.R, 02_clean.R, 03_model.Rscripts01, 02, 03numbersimport, clean, modelselectedlabel ← 01_import.R>02_clean.R>03_model.R
5scripts <- paste0(numbers, "_", selected, ".R")6label <- paste(scripts, collapse = ">")7cat(label, "\n", sep = "")values this step01_import.R>02_clean.R>03_model.Rlabel3 scriptsscriptscat(label, " ", sep = "")
6label <- paste(scripts, collapse = ">")7cat(label, "\n", sep = "")output01_import.R>02_clean.R>03_model.Rvalues this step01_import.R>02_clean.R>03_model.Rlabel
steps ← import, clean, model, report
1steps <- c("import", "clean", "model", "report")2step_count <- 2values this stepimport, clean, model, reportstepsstep_count ← 2
1steps <- c("import", "clean", "model", "report")2step_count <- 23selected <- steps[seq_len(step_count)]values this step2step_countselected ← import, clean
2step_count <- 23selected <- steps[seq_len(step_count)]4numbers <- sprintf("%02d", seq_along(selected))values this stepimport, cleanselected2step_countnumbers ← 01, 02
3selected <- steps[seq_len(step_count)]4numbers <- sprintf("%02d", seq_along(selected))5scripts <- paste0(numbers, "_", selected, ".R")values this step01, 02numbers2 stepsselectedscripts ← 01_import.R, 02_clean.R
4numbers <- sprintf("%02d", seq_along(selected))5scripts <- paste0(numbers, "_", selected, ".R")6label <- paste(scripts, collapse = ">")values this step01_import.R, 02_clean.Rscripts01, 02numbersimport, cleanselectedlabel ← 01_import.R>02_clean.R
5scripts <- paste0(numbers, "_", selected, ".R")6label <- paste(scripts, collapse = ">")7cat(label, "\n", sep = "")values this step01_import.R>02_clean.Rlabel2 scriptsscriptscat(label, " ", sep = "")
6label <- paste(scripts, collapse = ">")7cat(label, "\n", sep = "")output01_import.R>02_clean.Rvalues this step01_import.R>02_clean.Rlabel
steps ← import, clean, model, report
1steps <- c("import", "clean", "model", "report")2step_count <- 4values this stepimport, clean, model, reportstepsstep_count ← 4
1steps <- c("import", "clean", "model", "report")2step_count <- 43selected <- steps[seq_len(step_count)]values this step4step_countselected ← import, clean, model, report
2step_count <- 43selected <- steps[seq_len(step_count)]4numbers <- sprintf("%02d", seq_along(selected))values this stepimport, clean, model, reportselected4step_countnumbers ← 01, 02, 03, 04
3selected <- steps[seq_len(step_count)]4numbers <- sprintf("%02d", seq_along(selected))5scripts <- paste0(numbers, "_", selected, ".R")values this step01, 02, 03, 04numbers4 stepsselectedscripts ← 01_import.R, 02_clean.R, 03_model.R, 04_report.R
4numbers <- sprintf("%02d", seq_along(selected))5scripts <- paste0(numbers, "_", selected, ".R")6label <- paste(scripts, collapse = ">")values this step01_import.R, 02_clean.R, 03_model.R, 04_report.Rscripts01, 02, 03, 04numbersimport, clean, model, reportselectedlabel ← 01_import.R>02_clean.R>03_model.R>04_report.R
5scripts <- paste0(numbers, "_", selected, ".R")6label <- paste(scripts, collapse = ">")7cat(label, "\n", sep = "")values this step01_import.R>02_clean.R>03_model.R>04_report.Rlabel4 scriptsscriptscat(label, " ", sep = "")
6label <- paste(scripts, collapse = ">")7cat(label, "\n", sep = "")output01_import.R>02_clean.R>03_model.R>04_report.Rvalues this step01_import.R>02_clean.R>03_model.R>04_report.Rlabel
Follow the Order
stepsstarts asimport,clean,model,report.step_countstarts at3.steps[seq_len(3)]keepsimport,clean, andmodel.sprintf("%02d", ...)makes01,02, and03.- The script prints
01_import.R>02_clean.R>03_model.R. | step_count | selected steps | output | | ---: | --- | --- | | 2 | import, clean | 01_import.R>02_clean.R | | 3 | import, clean, model | 01_import.R>02_clean.R>03_model.R | | 4 | import, clean, model, report | 01_import.R>02_clean.R>03_model.R>04_report.R |
step order
Numbered filenames make execution order visible.
sprintf
`sprintf("%02d", ...)` formats numbers with leading zeros.
seq_along
`seq_along(selected)` creates positions for each chosen script.
Exercise: script_order.R
Reproduce 01_import.R>02_clean.R>03_model.R, then use step_count 2 and 4 to predict the shorter and full script order.