Optional Ecosystem Survey
Base Fallbacks
Know the Built-In Option
Before adopting a package, it helps to know the small base-R fallback for the same kind of task.
Program
Play the script to choose a task and see a built-in fallback function.
base_fallbacks.R
Replay: real traced execution (multi-file project)
task_index <- 2
tasks <- c("read_csv", "bar_chart", "join_table")
fallbacks <- c("read.csv", "barplot", "merge")
task <- tasks[task_index]
fallback <- fallbacks[task_index]
label <- paste(task, fallback, sep = ":")
cat(label, "\n", sep = "")
task_index <- 1
tasks <- c("read_csv", "bar_chart", "join_table")
fallbacks <- c("read.csv", "barplot", "merge")
task <- tasks[task_index]
fallback <- fallbacks[task_index]
label <- paste(task, fallback, sep = ":")
cat(label, "\n", sep = "")
task_index <- 3
tasks <- c("read_csv", "bar_chart", "join_table")
fallbacks <- c("read.csv", "barplot", "merge")
task <- tasks[task_index]
fallback <- fallbacks[task_index]
label <- paste(task, fallback, sep = ":")
cat(label, "\n", sep = "")
task_index ← 2
1task_index <- 22tasks <- c("read_csv", "bar_chart", "join_table")values this step2task_indextasks ← read_csv, bar_chart, join_table
1task_index <- 22tasks <- c("read_csv", "bar_chart", "join_table")3fallbacks <- c("read.csv", "barplot", "merge")values this stepread_csv, bar_chart, join_tabletasksfallbacks ← read.csv, barplot, merge
2tasks <- c("read_csv", "bar_chart", "join_table")3fallbacks <- c("read.csv", "barplot", "merge")4task <- tasks[task_index]values this stepread.csv, barplot, mergefallbackstask ← bar_chart
3fallbacks <- c("read.csv", "barplot", "merge")4task <- tasks[task_index]5fallback <- fallbacks[task_index]values this stepbar_charttask2task_indexfallback ← barplot
4task <- tasks[task_index]5fallback <- fallbacks[task_index]6label <- paste(task, fallback, sep = ":")values this stepbarplotfallback2task_indexread.csv, barplot, mergefallbackslabel ← bar_chart:barplot
5fallback <- fallbacks[task_index]6label <- paste(task, fallback, sep = ":")7cat(label, "\n", sep = "")values this stepbar_chart:barplotlabelbar_charttaskbarplotfallbackcat(label, " ", sep = "")
6label <- paste(task, fallback, sep = ":")7cat(label, "\n", sep = "")outputbar_chart:barplotvalues this stepbar_chart:barplotlabel
task_index ← 1
1task_index <- 12tasks <- c("read_csv", "bar_chart", "join_table")values this step1task_indextasks ← read_csv, bar_chart, join_table
1task_index <- 12tasks <- c("read_csv", "bar_chart", "join_table")3fallbacks <- c("read.csv", "barplot", "merge")values this stepread_csv, bar_chart, join_tabletasksfallbacks ← read.csv, barplot, merge
2tasks <- c("read_csv", "bar_chart", "join_table")3fallbacks <- c("read.csv", "barplot", "merge")4task <- tasks[task_index]values this stepread.csv, barplot, mergefallbackstask ← read_csv
3fallbacks <- c("read.csv", "barplot", "merge")4task <- tasks[task_index]5fallback <- fallbacks[task_index]values this stepread_csvtask1task_indexfallback ← read.csv
4task <- tasks[task_index]5fallback <- fallbacks[task_index]6label <- paste(task, fallback, sep = ":")values this stepread.csvfallback1task_indexread.csv, barplot, mergefallbackslabel ← read_csv:read.csv
5fallback <- fallbacks[task_index]6label <- paste(task, fallback, sep = ":")7cat(label, "\n", sep = "")values this stepread_csv:read.csvlabelread_csvtaskread.csvfallbackcat(label, " ", sep = "")
6label <- paste(task, fallback, sep = ":")7cat(label, "\n", sep = "")outputread_csv:read.csvvalues this stepread_csv:read.csvlabel
task_index ← 3
1task_index <- 32tasks <- c("read_csv", "bar_chart", "join_table")values this step3task_indextasks ← read_csv, bar_chart, join_table
1task_index <- 32tasks <- c("read_csv", "bar_chart", "join_table")3fallbacks <- c("read.csv", "barplot", "merge")values this stepread_csv, bar_chart, join_tabletasksfallbacks ← read.csv, barplot, merge
2tasks <- c("read_csv", "bar_chart", "join_table")3fallbacks <- c("read.csv", "barplot", "merge")4task <- tasks[task_index]values this stepread.csv, barplot, mergefallbackstask ← join_table
3fallbacks <- c("read.csv", "barplot", "merge")4task <- tasks[task_index]5fallback <- fallbacks[task_index]values this stepjoin_tabletask3task_indexfallback ← merge
4task <- tasks[task_index]5fallback <- fallbacks[task_index]6label <- paste(task, fallback, sep = ":")values this stepmergefallback3task_indexread.csv, barplot, mergefallbackslabel ← join_table:merge
5fallback <- fallbacks[task_index]6label <- paste(task, fallback, sep = ":")7cat(label, "\n", sep = "")values this stepjoin_table:mergelabeljoin_tabletaskmergefallbackcat(label, " ", sep = "")
6label <- paste(task, fallback, sep = ":")7cat(label, "\n", sep = "")outputjoin_table:mergevalues this stepjoin_table:mergelabel
fallback
A fallback names a built-in option available before adding a package.
task label
The task label keeps the decision tied to a concrete need.
dependency decision
Comparing task and fallback helps decide whether a package is worth adding.