Abstract
The ‘Changes in R’ article from the 2016-2 issue.CHANGES IN R 3.3.2 patched
NEW FEATURES
download.file() and
url() now report if they are unable to follow the
redirection of a http:// URL to a https:// URL
(rather than failing silently).INSTALLATION on a UNIX-ALIKE
configure check for the zlib version
is now robust to versions longer than 5 characters, including
1.2.10.UTILITIES
_R_CHECK_TESTS_NLINES_ controls
how R CMD check reports failing tests (see §8 of the ‘R
Internals’ manual).BUG FIXES
rep(x, times) and rep.int(x, times) now
both work also when times is larger than the maximal
integer, including when it is of length greater than one. (PR#16932)
vapply(x, *) now works with long vectors
x. (PR#17174)
isS3method("is.na.data.frame") and similar are
correct now. (PR#17171)
grepRaw(<long>, <short>, fixed = TRUE)
now works, thanks to a patch by Mikko Korpela. (PR#17132)
Package installation into a library where the package exists via
symbolic link now should work wherever () works, resolving
PR#16725.
"Cincinnati" was missing an "n" in the
precip dataset.
Fix buffer overflow vulnerability in pdf() when
loading an encoding file. Reported by Talos (TALOS-2016-0227).
getDLLRegisteredRoutines() now produces its warning
correctly when multiple DLLs match, thanks to Matt Dowle’s PR#17184.
Sys.timezone() now returns non-NA also on platforms
such as Ubuntu 14.04.5 LTS, thanks to Mikko Korpela’s PR#17186.
format(x) for an illegal "POSIXlt"
object x no longer segfaults.
methods(f) now also works for f
"(" or "{".
(Windows only) dir.create() did not check the length
of the path to create, and so could overflow a buffer and crash R. (PR#17206)
On some systems, very small hexadecimal numbers in hex notation would underflow to zero. (PR#17199)
pmin() and pmax() now work again for
ordered factors and 0-length S3 classed objects, thanks to
Suharto Anggono’s PR#17195
and PR#17200.
bug.report() did not do any validity checking on a
package’s BugReports field. It now ignores an empty field,
removes leading whitespace and only attempts to open
http:// and https:// URLs, falling back to
emailing the maintainer.
Bandwidth selectors bw.ucv() and
bw.SJ() gave incorrect answers or incorrectly reported an
error (because of integer overflow) for inputs longer than 46341.
Similarly for bw.bcv() at length 5793.
Another possible integer overflow is checked and may result in an error report (rather than an incorrect result) for much longer inputs (millions for a smooth distribution).
findMethod failed if the active signature had
expanded beyond what a particular package used. (Example with packages
XR and XRJulia
on CRAN).
qbeta() underflowed too early in some very
asymmetric cases. (PR#17178)
CHANGES IN R 3.3.2
NEW FEATURES
extSoftVersion() now reports the version (if any) of
the readline library in use.
The version of LAPACK included in the sources has been updated to
3.6.1, a bug-fix release including a speedup for the non-symmetric case
of eigen().
Use options(deparse.max.lines=) to limit the number
of lines recorded in .Traceback and other deparsing
activities.
format(<AsIs>) looks more regular, also for
non-character atomic matrices.
abbreviate() gains an option
named = TRUE.
The online documentation for package methods is extensively rewritten. The goals are to simplify documentation for basic use, to note old features not recommended and to correct out-of-date information.
Calls to setMethod() no longer print a message when
creating a generic function in those cases where that is natural: S3
generics and primitives.
INSTALLATION and INCLUDED SOFTWARE
Versions of the readline library >= 6.3 had been
changed so that terminal window resizes were not signalled to
readline: code has been added using a explicit signal
handler to work around that (when R is compiled against readline >=
6.3). (PR#16604)
configure works better with Oracle Developer Studio
12.5.
UTILITIES
R CMD check reports more dubious flags in files
src/Makevars[.in], including -w and
-g.
R CMD check has been set up to filter important
warnings from recent versions of gfortran with
-Wall -pedantic: this now reports non-portable GNU
extensions such as out-of-order declarations.
R CMD config works better with paths containing
spaces, even those of home directories (as reported by Ken
Beath).
DEPRECATED AND DEFUNCT
NO_C_HEADERS is deprecated (no C
headers are included by R headers from C++ as from R 3.3.0, so it should
no longer be needed).BUG FIXES
The check for non-portable flags in R CMD check
could be stymied by src/Makevars files which contained
targets.
(Windows only) When using certain desktop themes in Windows 7 or
higher, could cause Rterm to stop accepting input. (PR#14406;
patch submitted by Jan Gleixner.)
pretty(d, ..) behaves better for date-time
d (PR#16923).
When an S4 class name matches multiple classes in the S4 cache,
perform a dynamic search in order to obey namespace imports. This should
eliminate annoying messages about multiple hits in the class cache.
Also, pass along the package from the ClassExtends object
when looking up superclasses in the cache.
sample(NA_real_) now works.
Packages using non-ASCII encodings in their code did not install data properly on systems using different encodings.
merge(df1, df2) now also works for data frames with
column names "na.last", "decreasing", or
"method". (PR#17119)
contour() caused a segfault if the
labels argument had length zero. (Reported by Bill
Dunlap.)
unique(warnings()) works more correctly, thanks to a
new duplicated.warnings() method.
findInterval(x, vec = numeric(), all.inside = TRUE)
now returns 0s as documented. (Reported by Bill
Dunlap.)
(Windows only) R CMD SHLIB failed when a symbol in
the resulting library had the same name as a keyword in the
.def file. (PR#17130)
pmax() and pmin() now work with (more
?) classed objects, such as "Matrix" from the Matrix
package, as documented for a long time.
axis(side, x = D) and hence Axis() and
plot() now work correctly for "Date" and time
objects D, even when “time goes backward”, e.g., with
decreasing xlim. (Reported by William May.)
str(I(matrix(..))) now looks as always
intended.
plot.ts(), the plot() method for time
series, now respects cex, lwd and
lty. (Reported by Greg Werbin.)
parallel::mccollect() now returns a named list (as
documented) when called with wait = FALSE. (Reported by
Michel Lang.)
If a package added a class to a class union in another package, loading the first package gave erroneous warnings about “undefined subclass”.
c()’s argument use.names is documented
now, as belonging to the (C internal) default method. In “parallel”,
argument recursive is also moved from the generic to the
default method, such that the formal argument list of base
generic c() is just (...).
rbeta(4, NA) and similarly rgamma() and
rnbinom() now return NaN’s with a warning, as
other r<dist>(), and as documented. (PR#17155)
Using options(checkPackageLicense = TRUE) no longer
requires acceptance of the licence for non-default standard packages
such as compiler. (Reported by Mikko Korpela.)
split(<very_long>, *) now works even when the
split off parts are long. (PR#17139)
min() and max() now also work correctly
when the argument list starts with character(0). (PR#17160)
Subsetting very large matrices
(prod(dim(.)) >= 2^31) now works thanks to Michael
Schubmehl’s PR#17158.
bartlett.test() used residual sums of squares
instead of variances, when the argument was a list of lm
objects. (Reported by Jens Ledet Jensen).
plot(<lm>, which = *) now correctly labels the
contour lines for the standardized residuals for which = 6.
It also takes the correct \(p\) in case
of singularities (also for which = 5). (PR#17161)
xtabs(~ exclude) no longer fails from wrong scope,
thanks to Suharto Anggono’s PR#17147.
Reference class calls to methods() did not
re-analyse previously defined methods, meaning that calls to methods
defined later would fail. (Reported by Charles Tilford).
findInterval(x, vec, left.open = TRUE) misbehaved in
some cases. (Reported by Dmitriy Chernykh.)