Readable R code uses names that describe the role of each value rather than its position or temporary history.

Program

Play the script to choose a cleaned name and see how a readable label carries meaning.

style_index
clear_names.R
Replay: real traced execution (multi-file project)
style_index <- 2
raw_names <- c("Total Sales", "customer ID", "net-profit")
clean_names <- c("total_sales", "customer_id", "net_profit")
chosen <- clean_names[style_index]
label <- paste("name", chosen, sep = ":")
cat(label, "\n", sep = "")
style_index <- 1
raw_names <- c("Total Sales", "customer ID", "net-profit")
clean_names <- c("total_sales", "customer_id", "net_profit")
chosen <- clean_names[style_index]
label <- paste("name", chosen, sep = ":")
cat(label, "\n", sep = "")
style_index <- 3
raw_names <- c("Total Sales", "customer ID", "net-profit")
clean_names <- c("total_sales", "customer_id", "net_profit")
chosen <- clean_names[style_index]
label <- paste("name", chosen, sep = ":")
cat(label, "\n", sep = "")
  1. style_index ← 2

    1style_index <- 22raw_names <- c("Total Sales", "customer ID", "net-profit")
    values this step2style_index
  2. raw_names ← Total Sales, customer ID, net-profit

    1style_index <- 22raw_names <- c("Total Sales", "customer ID", "net-profit")3clean_names <- c("total_sales", "customer_id", "net_profit")
    values this stepTotal Sales, customer ID, net-profitraw_names
  3. clean_names ← total_sales, customer_id, net_profit

    2raw_names <- c("Total Sales", "customer ID", "net-profit")3clean_names <- c("total_sales", "customer_id", "net_profit")4chosen <- clean_names[style_index]
    values this steptotal_sales, customer_id, net_profitclean_names
  4. chosen ← customer_id

    3clean_names <- c("total_sales", "customer_id", "net_profit")4chosen <- clean_names[style_index]5label <- paste("name", chosen, sep = ":")
    values this stepcustomer_idchosen2style_indextotal_sales, customer_id, net_profitclean_names
  5. label ← name:customer_id

    4chosen <- clean_names[style_index]5label <- paste("name", chosen, sep = ":")6cat(label, "\n", sep = "")
    values this stepname:customer_idlabelcustomer_idchosen
  6. cat(label, " ", sep = "")

    5label <- paste("name", chosen, sep = ":")6cat(label, "\n", sep = "")
    outputname:customer_id
    values this stepname:customer_idlabel
  1. style_index ← 1

    1style_index <- 12raw_names <- c("Total Sales", "customer ID", "net-profit")
    values this step1style_index
  2. raw_names ← Total Sales, customer ID, net-profit

    1style_index <- 12raw_names <- c("Total Sales", "customer ID", "net-profit")3clean_names <- c("total_sales", "customer_id", "net_profit")
    values this stepTotal Sales, customer ID, net-profitraw_names
  3. clean_names ← total_sales, customer_id, net_profit

    2raw_names <- c("Total Sales", "customer ID", "net-profit")3clean_names <- c("total_sales", "customer_id", "net_profit")4chosen <- clean_names[style_index]
    values this steptotal_sales, customer_id, net_profitclean_names
  4. chosen ← total_sales

    3clean_names <- c("total_sales", "customer_id", "net_profit")4chosen <- clean_names[style_index]5label <- paste("name", chosen, sep = ":")
    values this steptotal_saleschosen1style_indextotal_sales, customer_id, net_profitclean_names
  5. label ← name:total_sales

    4chosen <- clean_names[style_index]5label <- paste("name", chosen, sep = ":")6cat(label, "\n", sep = "")
    values this stepname:total_saleslabeltotal_saleschosen
  6. cat(label, " ", sep = "")

    5label <- paste("name", chosen, sep = ":")6cat(label, "\n", sep = "")
    outputname:total_sales
    values this stepname:total_saleslabel
  1. style_index ← 3

    1style_index <- 32raw_names <- c("Total Sales", "customer ID", "net-profit")
    values this step3style_index
  2. raw_names ← Total Sales, customer ID, net-profit

    1style_index <- 32raw_names <- c("Total Sales", "customer ID", "net-profit")3clean_names <- c("total_sales", "customer_id", "net_profit")
    values this stepTotal Sales, customer ID, net-profitraw_names
  3. clean_names ← total_sales, customer_id, net_profit

    2raw_names <- c("Total Sales", "customer ID", "net-profit")3clean_names <- c("total_sales", "customer_id", "net_profit")4chosen <- clean_names[style_index]
    values this steptotal_sales, customer_id, net_profitclean_names
  4. chosen ← net_profit

    3clean_names <- c("total_sales", "customer_id", "net_profit")4chosen <- clean_names[style_index]5label <- paste("name", chosen, sep = ":")
    values this stepnet_profitchosen3style_indextotal_sales, customer_id, net_profitclean_names
  5. label ← name:net_profit

    4chosen <- clean_names[style_index]5label <- paste("name", chosen, sep = ":")6cat(label, "\n", sep = "")
    values this stepname:net_profitlabelnet_profitchosen
  6. cat(label, " ", sep = "")

    5label <- paste("name", chosen, sep = ":")6cat(label, "\n", sep = "")
    outputname:net_profit
    values this stepname:net_profitlabel
descriptive names Names such as `total_sales` and `customer_id` describe what a value means.
consistent style Using one naming style makes a script easier to scan.
lookup The index selects one readable name from a small vector.