A major update to the open-source R language, R 3.6.0, was released on April 26 and is now available for download for Windows, Mac and Linux. As a major update, it has many new features, user-visible changes and bug fixes. You can read the details in the release announcement, and in this blog post I’ll highlight the most significant ones.
Changes to random number generation. R 3.6.0 changes the method used to generate random integers in the
sample function. In prior versions, the probability of generating each integer could vary from equal by up to 0.04% (or possibly more if generating more than a million different integers). This change will mainly be relevant to people who do large-scale simulations, and it also means that scripts using the
sample function will generate different results in R 3.6.0 than they did in prior versions of R. If you need to keep the results the same (for reproducibility or for automated testing), you can revert to the old behavior by adding
RNGkind(sample.kind="Rounding")) to the top of your script.
Changes to R’s serialization format. If you want to save R data to disk with R 3.6.0 and read it back with R version 3.4.4 or earlier, you’ll need to use
readRDS("mydata.Rd",version=2) to save your data in the old serialization format, which has been updated to Version 3 for this release. (The same applies to the functions
serialize, and byte-compiled R code.) The R 3.5 series had forwards-compatibility in mind, and can already read data serialized in the Version 3 format.
Improvements to base graphics. You now have more options the appearance of axis labels (and perpendicular labels no longer overlap), better control over text positioning, a formula specification for barplots, and color palettes with better visual perception.
Improvements to package installation and loading, which should eliminate problems with partially-installed packages and reduce the space required for installed packages.
More functions now support vectors with more than 2 billion elements, including
Various speed improvements to functions including
stopifnot, and the
$ operator for data frames.
Improvements to statistical functions, including standard errors for T tests and better influence measures for multivariate models.
R now uses less memory, thanks to improvements to functions like
seq to use the ALTREP system to avoid duplicating data.
More control over R’s memory usage, including the ability limit the amount of memory R will use for data. (Attempting to exceed this limit will generate a “cannot allocate memory” error.) This is particularly useful when R is being used in production, to limit the impact of a wayward R process on other applications in a shared system.
Better consistency between platforms. This has been an ongoing process, but R now has fewer instances of functions (or function arguments) that are only available on limited platforms (e.g. on Windows but not on Linux). The documentation is now more consistent between platforms, too. This should mean fewer instances of finding R code that doesn’t run on your machine because it was written on a different platform.
There are many other specialized changes as well, which you can find in the release notes. Other than the issues raised above, most code from prior versions of R should run fine in R 3.6.0, but you will need to re-install any R packages you use, as they won’t carry over from your R 3.5.x installation. Now that a couple of weeks have passed since the release, most packages should be readily available on CRAN for R 3.6.0.
As R enters its 20th year of continuous stable releases, please do take a moment to reflect on the ongoing commitment of the R Core Team for their diligence in improving the R engine multiple times a year. Thank you to everyone who has contributed. If you’d like to support the R project, here’s some information on contributing to the R Foundation.
Final note: the code name for R 3.6.0 is “Planting of a Tree”. The R code-names generally refer to Peanuts comics: if anyone can identify what the R 3.6.0 codename is referring to, please let us know in the comments!
R-announce mailing list: R 3.6.0 is released