Changes in R

The ‘Changes in R’ article from the 2018-2 issue.

R Core Team
2018-12-01

CHANGES IN R 3.5.2

PACKAGE INSTALLATION

  • New macro CXX_VISIBILITY analogous to C_VISIBILITY (which several packages have been misusing for C++ code) for the default C++ compiler (but not necessarily one used for non-default C++ dialects like C++14).

TESTING

  • The random number generator tests in tests/p-r-random-tests.R no longer fail occasionally as they now randomly sample from “certified” random seeds.

BUG FIXES

  • The "glm" method of drop1() miscalculated the score test (test="Rao") when the model contained an offset.
  • Linear multiple empty models such as lm(y ~ 0) now have a correctly dimensioned empty coefficient matrix; reported by Brett Presnell.
  • vcov(<empty mlm>) and hence confint() now work (via a consistency change in summary.lm()).
  • confint(<multiple lm()>) now works correctly; reported on R-devel by Steven Pav.
  • quade.test() now also works correctly when its arguments are not yet sorted along groups, fixing PR#15842.
  • Installation on a Unix-alike tries harder to link to the pthread library where required (rather than relying on OpenMP to provide it: configuring with –disable-openmp was failing on some Linux systems).
  • The data.frame method for print(x) is fast now also for large data frames x and got an optional argument max, thanks to suggestions by Juan Telleria.
  • hist() no longer integer overflows in very rare cases, fixing PR#17450.
  • untar() ignored a character compressed argument: however many external tar programs ignore the flags which should have been set and automagically choose the compression type, and if appropriate gzip or bzip2 compression would have been chosen from the magic header of the tarball.
  • zapsmall(x) now works for more “number-like” objects.
  • The tools-internal function called from R CMD INSTALL now gets a warnOption = 1 argument and only sets options(warn = warnOption) when that increases the warning level (PR#17453).
  • Analogously, the tools-internal function called from R CMD check gets a warnOption = 1 argument and uses the larger of that and getOption("warn"), also allowing to be run with increased warning level.
  • Parse data now have deterministic parent nodes (PR#16041).
  • Calling match() with length one x and POSIXlt table gave a segfault (PR#17459).
  • Fork clusters could hang due to a race condition in cluster initialization (makeCluster()).
  • nextn(n) now also works for larger n and no longer loops infinitely for e.g, n <- 214e7.
  • cooks.distance() and rstandard() now work correctly for multiple linear models ("mlm").
  • polym() and corresponding lm() prediction now also work for a boundary "vector" case fixing PR#17474, reported by Alexandre Courtiol.
  • With a very large number of variables terms() could segfault (PR#17480).
  • cut(rep(0, 7)) now works, thanks to Joey Reid and Benjamin Tyner (PR#16802).
  • download.file(*, method = "curl", cacheOK = FALSE) should work now on Windows, thanks to Kevin Ushey’s patch in PR#17323.
  • duplicated(<dataframe with ’f’>) now works, too, thanks to Andreas Kersting’s PR#17485; ditto for anyDuplicated().
  • legend(*, cex = 1:2) now works less badly.
  • The print() method for POSIXct and POSIXlt now correctly obeys getOption("max.print"), fixing a long-standing typo, and it also gets a corresponding optional max argument.
  • Unserialization of raw vectors serialized in ASCII representation now works correctly.
  • <data frame>[TRUE, <new>] <- list(c1, c2) now works correctly, thanks to Suharto Anggono’s PR#15362 and Emil Bode’s patch in PR#17504.
  • seq.int(*, by=by, length=n) no longer wrongly “drops fractional parts” when by is integer, thanks to Suharto Anggono’s report PR#17506.
  • Buffering is disabled for file() connections to non-regular files (like sockets), as well as fifo() and pipe() connections. Fixes PR#17470, reported by Chris Culnane.

CHANGES IN R 3.5.1

BUG FIXES

  • file("stdin") is no longer considered seekable.
  • dput() and dump() are no longer truncating when options(deparse.max.lines = *) is set.
  • Calls with an S3 class are no longer evaluated when printed, fixing part of PR#17398, thanks to a patch from Lionel Henry.
  • Allow file argument of Rscript to include space even when it is first on the command line.
  • callNextMethod() uses the generic from the environment of the calling method. Reported by Hervé Pagès with well documented examples.
  • Compressed file connections are marked as blocking.
  • optim(*, lower = c(-Inf, -Inf)) no longer warns (and switches the method), thanks to a suggestion by John Nash.
  • predict(fm, newdata) is now correct also for models where the formula has terms such as splines::ns(..) or stats::poly(..), fixing PR#17414, based on a patch from Duncan Murdoch.
  • simulate.lm(glm(*, gaussian(link = <non-default>))) has been corrected, fixing PR#17415 thanks to Alex Courtiol.
  • unlist(x) no longer fails in some cases of nested empty lists. Reported by Steven Nydick.
  • qr.coef(qr(<all 0, w/ colnames>)) now works. Reported by Kun Ren.
  • The radix sort is robust to vectors with >1 billion elements (but long vectors are still unsupported). Thanks to Matt Dowle for the fix.
  • Terminal connections (e.g., stdin) are no longer buffered. Fixes PR#17432.
  • deparse(x), dput(x) and dump() now respect c()’s argument names recursive and use.names, e.g., for x <- setNames(0, "recursive"), thanks to Suharto Anggono’s PR#17427.
  • Unbuffered connections now work with encoding conversion. Reported by Stephen Berman.
  • .Renviron on Windows with Rgui is again by default searched for in user documents directory when invoked via the launcher icon. Reported by Jeroen Ooms.
  • printCoefmat() now also works with explicit right=TRUE.
  • print.noquote() now also works with explicit quote=FALSE.
  • The default method for pairs(.., horInd=*, verInd=*) now gets the correct order, thanks to reports by Chris Andrews and Gerrit Eichner. Additionally, when horInd or verInd contain only a subset of variables, all the axes are labeled correctly now.
  • agrep("..|..", .., fixed=FALSE) now matches when it should, thanks to a reminder by Andreas Kolter.
  • str(ch) now works for more invalid multibyte strings.

Note

This article is converted from a Legacy LaTeX article using the texor package. The pdf version is the official version. To report a problem with the html, refer to CONTRIBUTE on the R Journal homepage.

Reuse

Text and figures are licensed under Creative Commons Attribution CC BY 4.0. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: "Figure from ...".

Citation

For attribution, please cite this work as

Team, "Changes in R", The R Journal, 2018

BibTeX citation

@article{RJ-2018-2-ch,
  author = {Team, R Core},
  title = {Changes in R},
  journal = {The R Journal},
  year = {2018},
  note = {https://rjournal.github.io/},
  volume = {10},
  issue = {2},
  issn = {2073-4859},
  pages = {588-590}
}