An ecosystem survey starts by mapping optional packages to the job they usually support.

Program

Play the script to choose a role and see the package label stay explicit.

role_index
package_role_map.R
Replay: real traced execution (multi-file project)
role_index <- 2
roles <- c("import", "visualize", "model")
packages <- c("readr", "ggplot2", "tidymodels")
role <- roles[role_index]
package <- packages[role_index]
label <- paste(role, package, sep = ":")
cat(label, "\n", sep = "")
role_index <- 1
roles <- c("import", "visualize", "model")
packages <- c("readr", "ggplot2", "tidymodels")
role <- roles[role_index]
package <- packages[role_index]
label <- paste(role, package, sep = ":")
cat(label, "\n", sep = "")
role_index <- 3
roles <- c("import", "visualize", "model")
packages <- c("readr", "ggplot2", "tidymodels")
role <- roles[role_index]
package <- packages[role_index]
label <- paste(role, package, sep = ":")
cat(label, "\n", sep = "")
  1. role_index ← 2

    1role_index <- 22roles <- c("import", "visualize", "model")
    values this step2role_index
  2. roles ← import, visualize, model

    1role_index <- 22roles <- c("import", "visualize", "model")3packages <- c("readr", "ggplot2", "tidymodels")
    values this stepimport, visualize, modelroles
  3. packages ← readr, ggplot2, tidymodels

    2roles <- c("import", "visualize", "model")3packages <- c("readr", "ggplot2", "tidymodels")4role <- roles[role_index]
    values this stepreadr, ggplot2, tidymodelspackages
  4. role ← visualize

    3packages <- c("readr", "ggplot2", "tidymodels")4role <- roles[role_index]5package <- packages[role_index]
    values this stepvisualizerole2role_index
  5. package ← ggplot2

    4role <- roles[role_index]5package <- packages[role_index]6label <- paste(role, package, sep = ":")
    values this stepggplot2package2role_indexreadr, ggplot2, tidymodelspackages
  6. label ← visualize:ggplot2

    5package <- packages[role_index]6label <- paste(role, package, sep = ":")7cat(label, "\n", sep = "")
    values this stepvisualize:ggplot2labelvisualizeroleggplot2package
  7. cat(label, " ", sep = "")

    6label <- paste(role, package, sep = ":")7cat(label, "\n", sep = "")
    outputvisualize:ggplot2
    values this stepvisualize:ggplot2label
  1. role_index ← 1

    1role_index <- 12roles <- c("import", "visualize", "model")
    values this step1role_index
  2. roles ← import, visualize, model

    1role_index <- 12roles <- c("import", "visualize", "model")3packages <- c("readr", "ggplot2", "tidymodels")
    values this stepimport, visualize, modelroles
  3. packages ← readr, ggplot2, tidymodels

    2roles <- c("import", "visualize", "model")3packages <- c("readr", "ggplot2", "tidymodels")4role <- roles[role_index]
    values this stepreadr, ggplot2, tidymodelspackages
  4. role ← import

    3packages <- c("readr", "ggplot2", "tidymodels")4role <- roles[role_index]5package <- packages[role_index]
    values this stepimportrole1role_index
  5. package ← readr

    4role <- roles[role_index]5package <- packages[role_index]6label <- paste(role, package, sep = ":")
    values this stepreadrpackage1role_indexreadr, ggplot2, tidymodelspackages
  6. label ← import:readr

    5package <- packages[role_index]6label <- paste(role, package, sep = ":")7cat(label, "\n", sep = "")
    values this stepimport:readrlabelimportrolereadrpackage
  7. cat(label, " ", sep = "")

    6label <- paste(role, package, sep = ":")7cat(label, "\n", sep = "")
    outputimport:readr
    values this stepimport:readrlabel
  1. role_index ← 3

    1role_index <- 32roles <- c("import", "visualize", "model")
    values this step3role_index
  2. roles ← import, visualize, model

    1role_index <- 32roles <- c("import", "visualize", "model")3packages <- c("readr", "ggplot2", "tidymodels")
    values this stepimport, visualize, modelroles
  3. packages ← readr, ggplot2, tidymodels

    2roles <- c("import", "visualize", "model")3packages <- c("readr", "ggplot2", "tidymodels")4role <- roles[role_index]
    values this stepreadr, ggplot2, tidymodelspackages
  4. role ← model

    3packages <- c("readr", "ggplot2", "tidymodels")4role <- roles[role_index]5package <- packages[role_index]
    values this stepmodelrole3role_index
  5. package ← tidymodels

    4role <- roles[role_index]5package <- packages[role_index]6label <- paste(role, package, sep = ":")
    values this steptidymodelspackage3role_indexreadr, ggplot2, tidymodelspackages
  6. label ← model:tidymodels

    5package <- packages[role_index]6label <- paste(role, package, sep = ":")7cat(label, "\n", sep = "")
    values this stepmodel:tidymodelslabelmodelroletidymodelspackage
  7. cat(label, " ", sep = "")

    6label <- paste(role, package, sep = ":")7cat(label, "\n", sep = "")
    outputmodel:tidymodels
    values this stepmodel:tidymodelslabel
ecosystem role A role describes the problem area before choosing a package.
optional package Package names are treated as labels here; nothing is installed or loaded.
mapping Parallel vectors keep each role paired with one example package.