Rapid realistic routing on multimodal transport networks
    (walk, bike, public transport and car) using 'R5', the Rapid Realistic
    Routing on Real-world and Reimagined networks engine
    <https://github.com/conveyal/r5>. The package allows users to generate
    detailed routing analysis or calculate travel time and monetary cost matrices 
    using seamless parallel computing on top of the R5 Java machine.  While R5
    is developed by Conveyal, the package r5r is independently developed
    by a team at the Institute for Applied Economic Research (Ipea) with
    contributions from collaborators. Apart from the documentation in this
    package, users will find additional information on R5 documentation at
    <https://docs.conveyal.com/>. Although we try to keep new releases of
    r5r in synchrony with R5, the development of R5 follows Conveyal's
    independent update process. Hence, users should confirm the R5 version
    implied by the Conveyal user manual (see
    <https://docs.conveyal.com/changelog>) corresponds with the R5 version
    that r5r depends on. This version of r5r depends on R5 v7.1.

Creates classes with reference semantics, similar to R's
    built-in reference classes. Compared to reference classes, R6 classes
    are simpler and lighter-weight, and they are not built on S4 classes
    so they do not require the methods package. These classes allow public
    and private members, and they support inheritance, even when the
    classes are defined in different packages.

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.