After defining an R6 class, R62S3 is used to automatically generate optional S3/S4 generics and methods for dispatch. Also allows piping for R6 objects.

The implemented R6 class 'SCM' aims to simplify working with structural causal models. The missing data mechanism can be defined as a part of the structural model. The class contains methods for 1) defining a structural causal model via functions, text or conditional probability tables, 2) printing basic information on the model, 3) plotting the graph for the model using packages 'igraph' or 'qgraph', 4) simulating data from the model, 5) applying an intervention, 6) checking the identifiability of a query using the R packages 'causaleffect' and 'dosearch', 7) defining the missing data mechanism, 8) simulating incomplete data from the model according to the specified missing data mechanism and 9) checking the identifiability in a missing data problem using the R package 'dosearch'. In addition, there are functions for running experiments and doing counterfactual inference using simulation.

Provides reference classes implementing some useful data structures.
    The package implements these data structures by using the reference class R6.
    Therefore, the classes of the data structures are also reference classes which means that their instances are passed by reference.
    The implemented data structures include stack, queue, double-ended queue, doubly linked list, set, dictionary and binary search tree.
    See for example <https://en.wikipedia.org/wiki/Data_structure> for more information about the data structures.

Generate boilerplate code for R6 classes. Given R6 class create getters 
    and/or setters for selected class fields or use RStudio addins to insert methods 
    straight into class definition.

Build robust and maintainable software with object-oriented design 
    patterns in R. Design patterns abstract and present in neat, well-defined 
    components and interfaces the experience of many software designers and 
    architects over many years of solving similar problems. These are solutions 
    that have withstood the test of time with respect to re-usability,
    flexibility, and maintainability. 'R6P' provides abstract base classes with 
    examples for a few known design patterns. The patterns were selected by 
    their applicability to analytic projects in R. Using these patterns in R 
    projects have proven effective in dealing with the complexity that 
    data-driven applications possess.