R 3.2.2 (codename “Fire Safety”) was released last weekend. You can get the latest binaries version from here. (or the .tar.gz source code from here). The full list of new features and bug fixes is provided below.
SOME OF THE CHANGES
I personally found two things particularly interesting in this release:
- setInternet2(TRUE) is now the default for windows (which will save people from getting “Error in file(con, “r”)” when using the installr package)
- The dendrogram method of labels() is much more efficient for large dendrograms since it now uses rapply(). This is expected to speedup various functions in the dendextend R package (a package for visualizing, adjusting, and comparing dendrograms, which heavily relies on labels.dendrogram).
Also, David Smith (from Revolution/Microsoft) highlighted in his post several of the updates in R 3.2.2 he found interesting – mentioning how the new default for accessing the web with R will rely on the HTTPS protocol, and of improving the accuracy in the extreme tails of the t and hypergeometric distributions.
Upgrading to R 3.2.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) # saves some troubles installr::updateR() # updating R.
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.
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.
CHANGES IN R 3.2.2:
SIGNIFICANT USER-VISIBLE CHANGES
- It is now easier to use secure downloads from https:// URLs on builds which support them: no longer do non-default options need to be selected to do so. In particular, packages can be installed from repositories which offer https:// URLs, and those listed by
setRepositories()now do so (for some of their mirrors).Support for https:// URLs is available on Windows, and on other platforms if support for
libcurlwas compiled in and if that supports the
httpsprotocol (system installations can be expected to do). So https:// support can be expected except on rather old OSes (an example being OS X ‘Snow Leopard’, where a non-system version of
libcurlcan be used).(Windows only) The default method for accessing URLs via
url()has been changed to be
"wininet"using Windows API calls. This changes the way proxies need to be set and security settings made: there have been some reports of sites being inaccessible under the new default method (but the previous methods remain available).
cmdscale()gets new option
list.for increased flexibility when a list should be returned.
texinfoversion 6.0, which (unlike the change from 4.x to 5.0) is a minor update. (Wish of PR#16456.)
- (Non-Windows only)
method = "auto"now chooses
"libcurl"if that is available and a https:// or ftps:// URL is used.
- (Windows only)
setInternet2(TRUE)is now the default. The command-line option
--internet2and environment variable R_WIN_INTERNET2 are now ignored.Thus by default the
"wininet"method: to revert to the previous default use
setInternet2(FALSE).This means that https:// can be read by default by
download.file()(they have been readable by
url()since R 3.2.0).There are implications for how proxies need to be set (see
cacheOK = FALSEis not supported.
chooseBioCmirror()now offer HTTPS mirrors in preference to HTTP mirrors. This changes the interpretation of their
indarguments: see their help pages.
capture.output()gets optional arguments
splitto pass to
sink(), and hence can be used to capture messages.
- Header ‘Rconfig.h’ now defines
HAVE_ALLOCA_Hif the platform has the ‘alloca.h’ header (it is needed to define
allocaon Solaris and AIX, at least: see ‘Writing R Extensions’ for how to use it).
INSTALLATION and INCLUDED SOFTWARE
libtoolscript generated by
configurehas been modified to support FreeBSD >= 10 (PR#16410).
- The HTML help page links to demo code failed due to a change in R 3.2.0. (PR#16432)
- If the
na.actionargument was used in
model.frame(), the original data could be modified. (PR#16436)
getGraphicsEvent()could cause a crash if a graphics window was closed while it was in use. (PR#16438)
matrix(x, nr, nc, byrow = TRUE)failed if
xwas an object of type
strptime()could overflow the allocated storage on the C stack when the timezone had a non-standard format much longer than the standard formats. (Part of PR#16328.)
options(OutDec = s)now signals a warning (which will become an error in the future) when
sis not a string with exactly one character, as that has been a documented requirement.
prettyNum()gains a new option
input.d.markwhich together with other changes, e.g., the default for
decimal.mark, fixes some
format()ting variants with non-default
getOption("OutDec")such as in PR#16411.
typeequal to either
"binary". (Reported by Dan Tenenbaum.)
labels()is much more efficient for large dendrograms, now using
rapply(). (Comment #15 of PR#15215)
nls()could give spurious errors. (Reported by Radford Neal.)
- Reference classes that inherited from reference classes in another package could invalidate methods of the inherited class. Fixing this requires adding the ability for methods to be “external”, with the object supplied explicitly as the first argument, named
.self. See “Inter-Package Superclasses” in the documentation.
readBin()could fail on the SPARC architecture due to alignment issues. (Reported by Radford Neal.)
qt(*, df=Inf, ncp=.)now uses the natural
qnorm()limit instead of returning
- Auto-printing of S3 and S4 values now searches for
print()in the base namespace and
show()in the methods namespace instead of searching the global environment.
coefs = NULLargument and returns class
poly()which gets a new
simple=FALSEoption. They now lead to correct
predict()ions, e.g., on subsets of the original data.
rhyper(nn,now works correctly. (PR#16489)
ttkimage()did not (and could not) work so was removed. Ditto for
tkimage.configure(). Added two Ttk widgets and missing subcommands for Tk’s
tkimage.width(). (PR#15372, PR#16450)
getClass("foo")now also returns a class definition when it is found in the cache more than once.