R 3.4.2 is released (with several bug fixes and a few performance improvements)

R 3.4.2 (codename “Short Summer”) was released yesterday. You can get the latest binaries version from here. (or the .tar.gz source code from here).

As mentioned by David Smith, R 3.4.2 includes a performance improvement for names:

c() and unlist() are now more efficient in constructing the names(.) of their return value, thanks to a proposal by Suharto Anggono. (PR#17284)

The full list of bug fixes and new features is provided below.

Thank you Duncan Murdoch !

On a related note, following the announcement on R 3.4.2, Duncan Murdoch wrote yesterday:

I’ve just finished the Windows build of R 3.4.2.  It will make it to CRAN and its mirrors over the next few hours.

This is the last binary release that I will be producing.  I’ve been building them for about 15 years, and it’s time to retire.  Builds using different tools and scripts are available from https://mran.microsoft.com/download/.  I’ll be putting my own scripts on CRAN soon in case anyone wants to duplicate them.

Nightly builds of R-patched and R-devel will continue to run on autopilot for the time being, without maintenance.

I will also be retiring from maintenance of the Rtools collection.

I am grateful to Duncan for contributing so much of his time and expertise throughout the years. And I am confident that other R users, using the binaries for the Windows OS, share this sentiment.

Upgrading to R 3.4.2 on Windows

If you are using Windows you can easily upgrade to the latest version of R using the installr package. Simply run the following code in Rgui:

install.packages("installr") # install 
setInternet2(TRUE) # only for R versions older than 3.3.0
installr::updateR() # updating R.
# If you wish it to go faster, run: installr::updateR(T)

Running “updateR()” will detect if there is a new R version available, and if so it will download+install it (etc.). There is also a step by step tutorial (with screenshots) on how to upgrade R on Windows, using the installr package. If you only see the option to upgrade to an older version of R, then change your mirror or try again in a few hours (it usually take around 24 hours for all CRAN mirrors to get the latest version of R).

I try to keep the installr package updated and useful, so if you have any suggestions or remarks on the package – you are invited to open an issue in the github page.



  • Setting the LC_ALL category in Sys.setlocale() invalidates any cached locale-specific day/month names and the AM/PM indicator for strptime() (as setting LC_TIME has since R 3.1.0).
  • The version of LAPACK included in the sources has been updated to 3.7.1, a bug-fix release.
  • The default for tools::write_PACKAGES(rds_compress=) has been changed to "xz" to match the compression used by CRAN.
  • c() and unlist() are now more efficient in constructing the names(.) of their return value, thanks to a proposal by Suharto Anggono. (PR#17284)


  • R CMD check checks for and R CMD build corrects CRLF line endings in shell scripts configure and cleanup (even on Windows).


  • The order of selection of OpenMP flags has been changed: Oracle Developer Studio 12.5 accepts -fopenmp and -xopenmp but only the latter enables OpenMP so it is now tried first.


  • within(List, rm(x1, x2)) works correctly again, including when List[["x2"]] is NULL.
  • regexec(pattern, text, *) now applies as.character(.) to its first two arguments, as documented.
  • write.table() and related functions, writeLines(), and perhaps other functions writing text to connections did not signal errors when the writes failed, e.g. due to a disk being full. Errors will now be signalled if detected during the write, warnings if detected when the connection is closed. (PR#17243)
  • rt() assumed the ncp parameter was a scalar. (PR#17306)
  • menu(choices) with more than 10 choices which easily fit into one getOption("width")-line no longer erroneously repeats choices. (PR#17312)
  • length()<- on a pairlist succeeds. (https://stat.ethz.ch/pipermail/r-devel/2017-July/074680.html)
  • Language objects such as quote(("\n")) or R functions are correctly printed again, where R 3.4.1 accidentally duplicated the backslashes.
  • Construction of names() for very large objects in c() and unlist() now works, thanks to Suharto Anggono’s patch proposals in PR#17292.
  • Resource leaks (and similar) reported by Steve Grubb fixed. (PR#17314PR#17316PR#17317PR#17318PR#17319PR#17320)
  • model.matrix(~1, mf) now gets the row names from mf also when they differ from 1:nrow(mf), fixing PR#14992 thanks to the suggestion by Sebastian Meyer.
  • sigma(fm) now takes the correct denominator degrees of freedom for a fitted model with NA coefficients. (PR#17313)
  • hist(x, "FD") no longer “dies” with a somewhat cryptic error message when x has extreme outliers or IQR() zero: nclass.FD(x) tries harder to find a robust bin width h in the latter case, and hist.default(*, breaks) now checks and corrects a too large breaks number. (PR#17274)
  • callNextMethod() works for ... methods.
  • qr.coef(qd, y) now has correct names also when qd is a complex QR or stems from qr(*, LAPACK=TRUE).
  • Setting options(device = *) to an invalid function no longer segfaults when plotting is initiated. (PR#15883)
  • encodeString(<very large string>) no longer segfaults. (PR#15885)
  • It is again possible to use configure --enable-maintainer-mode without having installed notangle (it was required in R 3.4.[01]).
  • S4 method dispatch on ... calls the method by name instead of .Method (for consistency with default dispatch), and only attempts to pass non-missing arguments from the generic.
  • readRDS(textConnection(.)) works again. (PR#17325)
  • (1:n)[-n] no longer segfaults for n <- 2.2e9 (on a platform with enough RAM).
  • x <- 1:2; tapply(x, list(x, x), function(x) "")[1,2] now correctly returns NA. (PR#17333)
  • Running of finalizers after explicit GC request moved from the R interface do_gc to the C interface R_gc. This helps with reclaiming inaccessible connections.
  • help.search(topic) and ??topic matching topics in vignettes with multiple file name extensions (e.g., ‘*.md.rsp’ but not ‘*.Rmd’) failed with an error when using options(help_type = "html").
  • The X11 device no longer uses the Xlib backing store (PR#16497).
  • array(character(), 1) now gives (a 1D array with) NA as has been documented for a long time as in the other cases of zero-length array initialization and also compatibly withmatrix(character(), *). As mentioned there, this also fixes PR#17333.
  • splineDesign(.., derivs = 4) no longer segfaults.
  • fisher.test(*, hybrid=TRUE) now (again) will use the hybrid method when Cochran’s conditions are met, fixing PR#16654.



Leave a Reply