Skip to contents

# Relations to other packages

Source: `vignettes/articles/h_otherpkgs.Rmd`
`h_otherpkgs.Rmd`

    library(tinycodet)
    #> Run `?tinycodet::tinycodet` to open the introduction help page of 'tinycodet'.

## Introduction

This article lays out how the `tinycodet` R package relates to other R packages, and compatibility with other R packages, etc.

## Compatibility with other R packages

### Name conflicts

I made sure not to name any of the operators in `tinycodet` the same as the operators in the popular operator-related packages: magrittr and zeallot.

One may have noticed that some of the functionality in this R packages has been inspired by other programming languages, in particular by Python (please, refrain from taking out your torches and pitchforks!). This is not the first R package to take inspiration from other programming languages like Python. Therefore, one might find some overlapping function and operator names in other packages that do something similar; so be mindful of that.

### Other import systems

The import R package provides somewhat similar capabilities to the `tinycodet` import management system, but they are still quite different. The `tinycodet`’ import system focuses more on importing a main package + its re-exports + (reverse) dependencies under a alias, and exposing infix operators from a package to the current environment. The import package does not really provide this functionality directly (as far as I know). Strictly speaking there is no incompatibility between `tinycodet` and import. You can safely use both implementations of the import system, if you wish.

There is also the box package. Where import is primarily for importing packages, box is primarily for sourcing user-defined scripts as modules, though it can also import packages. Like import, box does not support importing multiple packages (or modules) under the same alias. It is compatible with `tinycodet`’s package import system; one can use box for handling user-defined scripts, and `tinycodet` for handling packages.

### Renv

When using the renv R package, note that it only registers packages that are attached using plain `library()` or `require()` calls. Anything different from that, whether it be loading (for example `::` or `loadNamespace()`), importing, or even things like `for(... in ...)library(...)` or `if(...)library(...)`, will by default NOT be understood by renv. Therefore, if using renv, please make sure to set the following:

    renv::settings$snapshot.type("all")

This will make sure that all packages installed in your project library, regardless of how they are loaded, will all be registered by renv. This makes renv compatible with calls like `import_as` from `tinycodet`, and things like `for(... in ...)library(...)` or `if(...)library(...)`.

## Recommended R packages

stringi is of course required for this packages.

Besides that, I highly recommend the fastverse set of R packages (https://github.com/fastverse/fastverse), which are a set of R packages for (mostly) data wrangling, focused on high speed, better memory management, and minimal dependencies.