Conference Agenda

Overview and details of the sessions of this conference. Please select a date or location to show only sessions at that day or location. Please select a single session for detailed view (with abstracts and downloads if available).

Only Sessions at Location/Venue 
Session Overview
1B - R packages 1
Monday, 05/July/2021:
4:45pm - 6:15pm

Session Chair: Luis Darcy Verde Arregoitia
Zoom Host: Juan Pablo Narváez-Gómez
Replacement Zoom Host: CHIBUOKEM BEN UBAH
Virtual location: The Lounge #talk_packages_1

Session Topics:
Other, R in production, Interfaces with other programming languages

Session Sponsor: R Studio
Session Slide

4:45pm - 5:05pm
ID: 123 / ses-01-B: 1
Regular Talk
Topics: Interfaces with other programming languages
Keywords: anomaly detection

RcppDeepState, a simple way to fuzz test R packages.

Akhila Chowdary Kolla, Dr. Toby Dylan Hocking, Dr. Alex groce

Northern Arizona University

R packages are typically tested using expected input/output pairs that are manually coded by package developers. These manually written tests are validated under various CRAN checks that perform both static and dynamic analysis. Manually written tests could still allow subtle bugs, if they do not anticipate all possible inputs, and miss important code paths. In contrast to manually written tests, fuzzers are programs that pass random, unexpected, potentially invalid inputs to a function, expecting it to break or identify subtle bugs.

Link to package or code repository.

5:05pm - 5:25pm
ID: 153 / ses-01-B: 2
Regular Talk
Topics: R in production
Keywords: business, industry

R in Regulated Industries: Assessing Risk with {riskmetric}

Doug Kelkhoff1,2, Yilong Zhang3, and many more contributors at the R Validation Hub (

1R Validation Hub; 2Roche; 3Merck

Regulated industries are built on long histories of software validation to bring confidence to the results that they produce. Historically, this validation has come through licensed software — at a time, such software tools were the preferred tool of practitioners. As free and open source tools rise in popularity, the spectrum of preferred tools grows ever wider. Today, R is the preferred language for many graduating statisticians and biologists. Furthermore, the open nature of these tools brings more ready access to bleeding edge methods expected by regulators.

While the R world brings some amazing pieces of infrastructure for software quality, there is an inevitable gap in translating open source practices to a validation world that is unfamiliar with open software development. With {riskmetric}, we have built a platform for implementing such quality assessments. From code quality to community engagement, we hope to characterize R packages to an extent that industry players can be confident that they can stand behind the tools they use when presenting analysis and software to regulators.

Here we present the {riskmetric} package and surrounding tools to help support R package validation, show how we’ve built a foundation for pulling metrics from a diverse set of information sources and provide next steps in the R Validation Hub’s roadmap to help bridge the gap toward open source tools in regulated industries.

Link to package or code repository.

5:25pm - 5:45pm
ID: 198 / ses-01-B: 3
Regular Talk
Topics: Other
Keywords: base, grammar, data manipulation, independence

{poorman} - A dependency free recreation of {dplyr}

Nathan Wayne Eastwood

NE Data

{poorman} is a package that unapologetically attempts to recreate the {dplyr} API in a dependency free way using only {base} R. {poorman} is still under development and doesn’t have all of {dplyr}’s functionality but what is considered the "core" functionality is included and the package is available on CRAN at: The idea behind {poorman} is that a user should be able to take a {dplyr} based script and run it using {poorman} without any hiccups.

{poorman} provides a consistent set of verbs that help you solve the most common data manipulation challenges:

* select() picks variables based on their names.

* mutate() adds new variables that are functions of existing variables.

* filter() picks cases based on their values.

* summarise() reduces multiple values down to a single summary.

* arrange() changes the ordering of the rows.