Parses simple string distribution specifications, like "normal(0, 1)", into two columns of
a data frame, suitable for use with stat_dist_slabinterval() and its shortcut stats
(like stat_dist_halfeye). This format is output
by brms::get_prior, making it particularly useful for visualizing priors from
brms models.
parse_dist(object, ..., dist = ".dist", args = ".args", to_r_names = TRUE) # S3 method for default parse_dist(object, ...) # S3 method for data.frame parse_dist( object, dist_col, ..., dist = ".dist", args = ".args", to_r_names = TRUE ) # S3 method for character parse_dist(object, ..., dist = ".dist", args = ".args", to_r_names = TRUE) # S3 method for factor parse_dist(object, ..., dist = ".dist", args = ".args", to_r_names = TRUE) r_dist_name(dist_name)
| object | A character vector containing distribution specifications or a data frame with a column containing distribution specifications. |
|---|---|
| ... | Arguments passed to other implementations of |
| dist | The name of the output column to contain the distribution name |
| args | The name of the output column to contain the arguments to the distribution |
| to_r_names | If |
| dist_col | A bare (unquoted) column or column expression that resolves to a character vector of distribution specifications. |
| dist_name | For |
parse_dist returns a data frame containing at least two columns named after the dist and args
parameters. If the input is a data frame, the output is a data frame of the same length with those
two columns added. If the input is a character vector or factor, the output is a two-column data frame
with the same number of rows as the length of the input.
r_dist_name returns a character vector the same length as the input containing translations of the
input names into distribution names R can recognize.
parse_dist() can be applied to character vectors or to a data frame + bare column name of the
column to parse, and returns a data frame with ".dist" and ".args" columns added.
parse_dist() uses r_dist_name() to translate distribution names into names recognized
by R.
r_dist_name() takes a character vector of names and translates common names into R
distribution names. Names are first made into valid R names using make.names(),
then translated (ignoring character case, ".", and "_"). Thus, "lognormal",
"LogNormal", "log_normal", "log-Normal", and any number of other variants
all get translated into "lnorm".
See stat_dist_slabinterval() and its shortcut stats, which can easily make use of
the output of this function using the dist and args aesthetics.
library(dplyr) # parse dist can operate on strings directly... parse_dist(c("normal(0,1)", "student_t(3,0,1)"))#> # A tibble: 2 x 2 #> .dist .args #> <chr> <list> #> 1 norm <list [2]> #> 2 student_t <list [3]># ... or on columns of a data frame, where it adds the # parsed specs back on as columns data.frame(prior = c("normal(0,1)", "student_t(3,0,1)")) %>% parse_dist(prior)#> prior .dist .args #> 1 normal(0,1) norm 0, 1 #> 2 student_t(3,0,1) student_t 3, 0, 1# parse_dist is particularly useful with the output of brms::prior(), # which follow the same format as above