Functionality to decorate R6 Distributions (and child classes) with extra methods.

decorate(distribution, decorators, ...)



Distribution to decorate.


(character()) Vector of DistributionDecorator names to decorate the Distribution with.


Extra arguments passed down to specific decorators.


Returns a Distribution with additional methods from the chosen DistributionDecorator.


Decorating is the process of adding methods to classes that are not part of the core interface (Gamma et al. 1994). Use listDecorators to see which decorators are currently available. The primary use-cases are to add numeric results when analytic ones are missing, to add complex modelling functions and to impute missing d/p/q/r functions.


Gamma, Erich, Richard Helm, Ralph Johnson, and John Vlissides. 1994. “Design Patterns: Elements of Reusable Object-Oriented Software.” Addison-Wesley.

See also

listDecorators() for available decorators and DistributionDecorator for the parent class.


B <- Binomial$new() decorate(B, "CoreStatistics")
#> Binomial is now decorated with CoreStatistics
#> Binom(prob = 0.5, qprob = 0.5, size = 10)
E <- Exponential$new() decorate(E, c("CoreStatistics", "ExoticStatistics"))
#> Exponential is now decorated with CoreStatistics, ExoticStatistics
#> Exp(rate = 1, scale = 1)