With the pointblank package it’s really easy to methodically validate your data whether in the form of data frames or as database tables. On top of the validation toolset, the package gives you the means to provide and keep up-to-date with the information that defines your tables.

For table validation, the agent object works with a large collection of simple (yet powerful!) validation functions. We can enable much more sophisticated validation checks by using custom expressions and also through stepwise mutation of the target table (through something we call preconditions).

Sometimes we want to maintain table information and update it when the table goes through changes. For that, we can use an informant object + associated functions to help define the metadata entries and present it in a way that suits you.


Want to try this out? The pointblank package is available on CRAN:


You can also install the development version of pointblank from GitHub:


If you encounter a bug, have usage questions, or want to share ideas to make this package better, feel free to file an issue.

Let’s Discuss!

Let’s talk about data validation and data documentation in pointblank Discussions! It’s a great place to ask questions about how to use the package, discuss some ideas, engage with others, and much more!

Code of Conduct

Please note that the pointblank project is released with a contributor code of conduct. By participating in this project you agree to abide by its terms.

📄 License

pointblank is licensed under the MIT license. See the LICENSE.md file for more details.

🏛️ Governance

This project is primarily maintained by Rich Iannone. Other authors may occasionally assist with some of these duties.