Package Workflows
Namespace Calls
Choosing a Function
A qualified call such as stats::median names the package and the function explicitly. This avoids depending on search-path order.
Program
Play the script to choose a summary function and see the package-qualified call it represents.
namespace_call.R
Replay: real traced execution (multi-file project)
values <- c(4, 8, 10, 12)
summary_index <- 1
summary_name <- c("mean", "median", "sd")[summary_index]
summary_value <- switch(summary_name, mean = base::mean(values), median = stats::median(values), sd = stats::sd(values))
label <- paste(summary_name, round(summary_value, 1), sep = "=")
cat(label, "\n", sep = "")
values <- c(4, 8, 10, 12)
summary_index <- 2
summary_name <- c("mean", "median", "sd")[summary_index]
summary_value <- switch(summary_name, mean = base::mean(values), median = stats::median(values), sd = stats::sd(values))
label <- paste(summary_name, round(summary_value, 1), sep = "=")
cat(label, "\n", sep = "")
values <- c(4, 8, 10, 12)
summary_index <- 3
summary_name <- c("mean", "median", "sd")[summary_index]
summary_value <- switch(summary_name, mean = base::mean(values), median = stats::median(values), sd = stats::sd(values))
label <- paste(summary_name, round(summary_value, 1), sep = "=")
cat(label, "\n", sep = "")
values ← 4, 8, 10, 12
1values <- c(4, 8, 10, 12)2summary_index <- 1values this step4, 8, 10, 12valuessummary_index ← 1
1values <- c(4, 8, 10, 12)2summary_index <- 13summary_name <- c("mean", "median", "sd")[summary_index]values this step1summary_indexsummary_name ← mean
2summary_index <- 13summary_name <- c("mean", "median", "sd")[summary_index]4summary_value <- switch(summary_name, mean = base::mean(values), median = stats::median(values), sd = stats::sd(values))values this stepmeansummary_name1summary_indexsummary_value ← 8.5, call ← base::mean(values)
3summary_name <- c("mean", "median", "sd")[summary_index]4summary_value <- switch(summary_name, mean = base::mean(values), median = stats::median(values), sd = stats::sd(values))5label <- paste(summary_name, round(summary_value, 1), sep = "=")values this step8.5summary_valuebase::mean(values)callmeansummary_name4, 8, 10, 12valueslabel ← mean=8.5
4summary_value <- switch(summary_name, mean = base::mean(values), median = stats::median(values), sd = stats::sd(values))5label <- paste(summary_name, round(summary_value, 1), sep = "=")6cat(label, "\n", sep = "")values this stepmean=8.5labelmeansummary_name8.5summary_valuecat(label, " ", sep = "")
5label <- paste(summary_name, round(summary_value, 1), sep = "=")6cat(label, "\n", sep = "")outputmean=8.5values this stepmean=8.5label
values ← 4, 8, 10, 12
1values <- c(4, 8, 10, 12)2summary_index <- 2values this step4, 8, 10, 12valuessummary_index ← 2
1values <- c(4, 8, 10, 12)2summary_index <- 23summary_name <- c("mean", "median", "sd")[summary_index]values this step2summary_indexsummary_name ← median
2summary_index <- 23summary_name <- c("mean", "median", "sd")[summary_index]4summary_value <- switch(summary_name, mean = base::mean(values), median = stats::median(values), sd = stats::sd(values))values this stepmediansummary_name2summary_indexsummary_value ← 9, call ← stats::median(values)
3summary_name <- c("mean", "median", "sd")[summary_index]4summary_value <- switch(summary_name, mean = base::mean(values), median = stats::median(values), sd = stats::sd(values))5label <- paste(summary_name, round(summary_value, 1), sep = "=")values this step9summary_valuestats::median(values)callmediansummary_name4, 8, 10, 12valueslabel ← median=9
4summary_value <- switch(summary_name, mean = base::mean(values), median = stats::median(values), sd = stats::sd(values))5label <- paste(summary_name, round(summary_value, 1), sep = "=")6cat(label, "\n", sep = "")values this stepmedian=9labelmediansummary_name9summary_valuecat(label, " ", sep = "")
5label <- paste(summary_name, round(summary_value, 1), sep = "=")6cat(label, "\n", sep = "")outputmedian=9values this stepmedian=9label
values ← 4, 8, 10, 12
1values <- c(4, 8, 10, 12)2summary_index <- 3values this step4, 8, 10, 12valuessummary_index ← 3
1values <- c(4, 8, 10, 12)2summary_index <- 33summary_name <- c("mean", "median", "sd")[summary_index]values this step3summary_indexsummary_name ← sd
2summary_index <- 33summary_name <- c("mean", "median", "sd")[summary_index]4summary_value <- switch(summary_name, mean = base::mean(values), median = stats::median(values), sd = stats::sd(values))values this stepsdsummary_name3summary_indexsummary_value ← 3.4, call ← stats::sd(values)
3summary_name <- c("mean", "median", "sd")[summary_index]4summary_value <- switch(summary_name, mean = base::mean(values), median = stats::median(values), sd = stats::sd(values))5label <- paste(summary_name, round(summary_value, 1), sep = "=")values this step3.4summary_valuestats::sd(values)callsdsummary_name4, 8, 10, 12valueslabel ← sd=3.4
4summary_value <- switch(summary_name, mean = base::mean(values), median = stats::median(values), sd = stats::sd(values))5label <- paste(summary_name, round(summary_value, 1), sep = "=")6cat(label, "\n", sep = "")values this stepsd=3.4labelsdsummary_name3.4summary_valuecat(label, " ", sep = "")
5label <- paste(summary_name, round(summary_value, 1), sep = "=")6cat(label, "\n", sep = "")outputsd=3.4values this stepsd=3.4label
qualified call
`package::function` calls a function from a package namespace explicitly.
switch
`switch(summary_name, ...)` selects the expression for the chosen name.
round
`round(summary_value, 1)` keeps numeric display stable for replay.