box
renv
Our great sponsors
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
box
- Trying to Replicate Excel financial Functions
-
Can someone explain how R project are organized and deployed?
As for organising code within a project, as mentioned packages really don’t allow this beyond collation order. The best solution in this space is the ‘box’ package which implements a fully-featured module system for R. ‘box’ notably gets used by some folks to implement large-scale Shiny applications; if this is what you’re after, I would recommend the ‘rhino’ framework, which builds upon Siny and ‘box’.
-
Good practice with long R scripts - any examples?
You can write amazing, clean, modular code with the box package.
-
Does anyone feel like R is actually vastly worse for dependency/environment management than Python?
I would look into box https://github.com/klmr/box if you haven’t heard of it already
-
"Managing large codebases in R" webinar (Oct. 6, 2022)
Shapeless plug: check out the already mentioned ‘box’, I think it’s strictly superior to ‘import’ (but I’m biased).
-
Get tsarted wiht R using this Cheat Sheet - DataCamp
By contrast, R code doesn’t need to change the working directory at all! Having to do so hides other flaws in the code. For instance, when trying to load code or data, use the tools provided by R. That is, write packages and use system.file or, when not writing packages, use ‘box’.
-
Which R function do you find somewhat tricky?
‘box’ fixes that.
-
Restructuring a large R project. Need advice on how to wire up file paths and associated objects.
I think your use-case is best addressed by the ‘targets’ package. But I would also recommend checking out the ‘box’ package for a more general way of structuring R projects in modules which isn’t supported well natively by R (disclaimer: I wrote that package). Writing R code as modules fundamentally side-steps the issue of having to deal with absolute paths. Instead, all code and data are either contained in the module or can be accessed relative to the working directory.
-
[Q] Loading `dplyr` packages within a function but not outside of it
However, using ‘box’, as recommended in another comment, allows you to achieve the same effect with less (and cleaner) code, by declaring your imports locally with the box::use function.
-
Is it possible to see what functions are used from what library?
If you're writing you're own code you can use packageName::functionName(), or the box package. Which is definitely useful on larger codebases.
renv
-
Every modeler is supposed to be a great Python programmer
As I alluded to, renv exists, but it requires a lot of development work before it is a comparably robust option for the ecosystem. Basic things like a command-line interface [0], working with non-CRAN repos [1], using an existing DESCRIPTION file [2], etc. There are many use cases where renv does not work in a corporate environment (ie not open-source all public code scenarios). Some of those issues have been open for years.
I do not believe the situation is unsolvable, but there is significant work to be done. Renv provides value today, and I will encourage everyone to use it. However, it has significant blind spots which continue to make R deployments challenging.
[0] https://github.com/rstudio/renv/issues/1055
-
What is your favorite R package and why?
renv for managing packages in projects.
-
New package ‘box’: Write reusable, composable and modular R code
Oh wow! That is crazy!
-
Groundhog: Addressing the Threat That R Poses to Reproducible Research
I’ve yet to use it personally, but renv [1] seems to try to solve the reproducible builds problem in a way more similar to other modern package managers (e.g. by generating a lockfile).
This approach enables stricter validations against tampering with the package repositories as a hash of the package can be stored in the lockfile, however it is obviously a bit more complex to use than the groundhog approach.
[1]: https://github.com/rstudio/renv
What are some alternatives?
ggplot2 - An implementation of the Grammar of Graphics in R
groundhog - Reproducible R Scripts Via Date Controlled Installing & Loading of CRAN & Git Packages
rnim - A bridge between R and Nim
keyring - :closed_lock_with_key: Access the system credential store from R
tidytable - Tidy interface to 'data.table'
Prophet - Tool for producing high quality forecasts for time series data that has multiple seasonality with linear or non-linear growth.
workflowr - Organize your project into a research website
dlookr - Tools for Data Diagnosis, Exploration, Transformation
rspm - RStudio Package Manager
ranger - A Fast Implementation of Random Forests
lintr - Static Code Analysis for R
plotnine - A Grammar of Graphics for Python