Articles by Posts on R-hub blog

Caching the results of functions of your R package

July 29, 2021 | Posts on R-hub blog

One principle of programming that’s often encountered is “DRY”, “Don’t Repeat Yourself”, that encourages e.g. the use of functions over duplicated (read: copy-pasted and slightly amended) code. You could also interpret it as don’t let the machine repeat its calculations if useless. How about for a ... [Read more...]

RSQLite concurrency issues — solution included

March 12, 2021 | Posts on R-hub blog

SQLite is a great, full featured SQL database engine. Most likely it is used more than all other database engines combined. The RSQLite R package embeds SQLite, and lets you query and manipulate SQLite databases from R. It is used in Bioconductor data packages, many deployed Shiny apps, and several ... [Read more...]

State of R packages in your library

September 2, 2020 | Posts on R-hub blog

Ever wondered where packages in general and their code in particular go when you run something like install.packages()? This post is for you! Where do installed packages live? Packages are installed at the path you give as lib argument to install.packages() (or to any remotes::install_ function, that ... [Read more...]

JavaScript for the R package developer

August 24, 2020 | Posts on R-hub blog

JS and R, what a clickbait! Come for JS, stay for our posts about Solaris and WinBuilder. ???? No matter how strongly you believe in JavaScript being the language of the future (see below), you might still gain from using it in your R practice, be it back-end or front-end. javascript ... [Read more...]

Optimal workflows for package vignettes

June 2, 2020 | Posts on R-hub blog

Yet another post with a focus on package documentation! This time, we’ll cover vignettes a.k.a “long-form package documentation”, both basics around vignette building and infrastructure, and some tips for more maintainer- and user- friendliness. What is a vignette? Where does it live? In this section we shall ... [Read more...]

Checking your R package on Solaris

May 13, 2020 | Posts on R-hub blog

TL;DR To check your package on Solaris, call rhub::check() as usual and choose one of our Solaris builders. Bookmark this page, in case you get an email from CRAN about your package failing on Solaris. Oracle Solaris Oracle Solaris is a non-free Unix operating system. CRAN regularly tests ... [Read more...]

Everything you should know about WinBuilder

March 31, 2020 | Posts on R-hub blog

If you’ve tried submitting a package on CRAN, you might have heard of WinBuilder, as it is mentioned in CRAN submission checklist. In this post inspired by reading R-package-devel archive, we shall go through important questions around WinBuilder. What is WinBuilder and why use it? As mentioned in its ... [Read more...]

Persistent config and data for R packages

March 11, 2020 | Posts on R-hub blog

Does your R package work best with some configuration? You probably want it to be easily found by your package. Does your R package download huge datasets that don’t change much on the provider side? Maybe you want to save the corresponding data somewhere persistent so that things will ... [Read more...]

Debugging: Signals and Subprocesses

February 19, 2020 | Posts on R-hub blog

This is a short story about a non-trivial bug in the processx package, and how I fixed it. It is a good showcase of the some debugging tools. The bug processx is an R package to start and manage external processes. It is used by the callr package to run ... [Read more...]

Code generation in R packages

February 9, 2020 | Posts on R-hub blog

If you use the same code three times, write a function. If you write three such related functions, set up a package. But if you write three embarrassingly similar functions… write code to generate their code for you? In this post, we’ll deal with source code generation. We’ll ... [Read more...]
1 2

Never miss an update!
Subscribe to R-bloggers to receive
e-mails with the latest R posts.
(You will not see this message again.)

Click here to close (This popup will not appear again)