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.

step_count
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 = "")
  1. steps ← import, clean, model, report

    1steps <- c("import", "clean", "model", "report")2step_count <- 3
    values this stepimport, clean, model, reportsteps
  2. step_count ← 3

    1steps <- c("import", "clean", "model", "report")2step_count <- 33selected <- steps[seq_len(step_count)]
    values this step3step_count
  3. selected ← import, clean, model

    2step_count <- 33selected <- steps[seq_len(step_count)]4numbers <- sprintf("%02d", seq_along(selected))
    values this stepimport, clean, modelselected3step_count
  4. numbers ← 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 stepsselected
  5. scripts ← 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, modelselected
  6. label ← 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 scriptsscripts
  7. cat(label, " ", sep = "")

    6label <- paste(scripts, collapse = ">")7cat(label, "\n", sep = "")
    output01_import.R>02_clean.R>03_model.R
    values this step01_import.R>02_clean.R>03_model.Rlabel
  1. steps ← import, clean, model, report

    1steps <- c("import", "clean", "model", "report")2step_count <- 2
    values this stepimport, clean, model, reportsteps
  2. step_count ← 2

    1steps <- c("import", "clean", "model", "report")2step_count <- 23selected <- steps[seq_len(step_count)]
    values this step2step_count
  3. selected ← import, clean

    2step_count <- 23selected <- steps[seq_len(step_count)]4numbers <- sprintf("%02d", seq_along(selected))
    values this stepimport, cleanselected2step_count
  4. numbers ← 01, 02

    3selected <- steps[seq_len(step_count)]4numbers <- sprintf("%02d", seq_along(selected))5scripts <- paste0(numbers, "_", selected, ".R")
    values this step01, 02numbers2 stepsselected
  5. scripts ← 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, cleanselected
  6. label ← 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 scriptsscripts
  7. cat(label, " ", sep = "")

    6label <- paste(scripts, collapse = ">")7cat(label, "\n", sep = "")
    output01_import.R>02_clean.R
    values this step01_import.R>02_clean.Rlabel
  1. steps ← import, clean, model, report

    1steps <- c("import", "clean", "model", "report")2step_count <- 4
    values this stepimport, clean, model, reportsteps
  2. step_count ← 4

    1steps <- c("import", "clean", "model", "report")2step_count <- 43selected <- steps[seq_len(step_count)]
    values this step4step_count
  3. selected ← import, clean, model, report

    2step_count <- 43selected <- steps[seq_len(step_count)]4numbers <- sprintf("%02d", seq_along(selected))
    values this stepimport, clean, model, reportselected4step_count
  4. numbers ← 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 stepsselected
  5. scripts ← 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, reportselected
  6. label ← 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 scriptsscripts
  7. cat(label, " ", sep = "")

    6label <- paste(scripts, collapse = ">")7cat(label, "\n", sep = "")
    output01_import.R>02_clean.R>03_model.R>04_report.R
    values this step01_import.R>02_clean.R>03_model.R>04_report.Rlabel

Follow the Order

  1. steps starts as import, clean, model, report.
  2. step_count starts at 3.
  3. steps[seq_len(3)] keeps import, clean, and model.
  4. sprintf("%02d", ...) makes 01, 02, and 03.
  5. 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.