metric_vec_template() is useful alongside metric_summarizer() for implementing new custom metrics. metric_summarizer() calls the metric function inside dplyr::summarise(). metric_vec_template() is a generalized function that calls the core implementation of a metric function, and includes a number of checks on the types, lengths, and argument inputs.

  na_rm = TRUE,
  cls = "numeric",
  estimator = NULL,



The core implementation function of your custom metric. This core implementation function is generally defined inside the vector method of your metric function.


The realized vector of truth. This is either a factor or a numeric.


The realized estimate result. This is either a numeric vector, a factor vector, or a numeric matrix (in the case of multiple class probability columns) depending on your metric function.


A logical value indicating whether NA values should be stripped before the computation proceeds. NA values are removed before getting to your core implementation function so you do not have to worry about handling them yourself. If na_rm=FALSE and any NA values exist, then NA is automatically returned.


A character vector of length 1 or 2 corresponding to the class that truth and estimate should be, respectively. If truth and estimate are of the same class, just supply a vector of length 1. If they are different, supply a vector of length 2. For matrices, it is best to supply "numeric" as the class to check here.


The type of averaging to use. By this point, the averaging type should be finalized, so this should be a character vector of length 1\. By default, this character value is required to be one of: "binary", "macro", "micro", or "macro_weighted". If your metric allows more or less averaging methods, override this with averaging_override.


Extra arguments to your core metric function, metric_impl, can technically be passed here, but generally the extra args are added through R's scoping rules because the core metric function is created on the fly when the vector method is called.


metric_vec_template() is called from the vector implementation of your metric. Also defined inside your vector implementation is a separate function performing the core implementation of the metric function. This core function is passed along to metric_vec_template() as metric_impl.

See also