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

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.

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.

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 ...".

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} }