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.

summary_index
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 = "")
  1. values ← 4, 8, 10, 12

    1values <- c(4, 8, 10, 12)2summary_index <- 1
    values this step4, 8, 10, 12values
  2. summary_index ← 1

    1values <- c(4, 8, 10, 12)2summary_index <- 13summary_name <- c("mean", "median", "sd")[summary_index]
    values this step1summary_index
  3. summary_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_index
  4. summary_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, 12values
  5. label ← 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_value
  6. cat(label, " ", sep = "")

    5label <- paste(summary_name, round(summary_value, 1), sep = "=")6cat(label, "\n", sep = "")
    outputmean=8.5
    values this stepmean=8.5label
  1. values ← 4, 8, 10, 12

    1values <- c(4, 8, 10, 12)2summary_index <- 2
    values this step4, 8, 10, 12values
  2. summary_index ← 2

    1values <- c(4, 8, 10, 12)2summary_index <- 23summary_name <- c("mean", "median", "sd")[summary_index]
    values this step2summary_index
  3. summary_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_index
  4. summary_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, 12values
  5. label ← 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_value
  6. cat(label, " ", sep = "")

    5label <- paste(summary_name, round(summary_value, 1), sep = "=")6cat(label, "\n", sep = "")
    outputmedian=9
    values this stepmedian=9label
  1. values ← 4, 8, 10, 12

    1values <- c(4, 8, 10, 12)2summary_index <- 3
    values this step4, 8, 10, 12values
  2. summary_index ← 3

    1values <- c(4, 8, 10, 12)2summary_index <- 33summary_name <- c("mean", "median", "sd")[summary_index]
    values this step3summary_index
  3. summary_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_index
  4. summary_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, 12values
  5. label ← 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_value
  6. cat(label, " ", sep = "")

    5label <- paste(summary_name, round(summary_value, 1), sep = "=")6cat(label, "\n", sep = "")
    outputsd=3.4
    values 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.