R 3.2.2 is released

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:

  1. setInternet2(TRUE) is now the default for windows (which will save people from getting “Error in file(con, “r”)” when using the installr package)
  2. 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)
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 forlibcurl was compiled in and if that supports the https protocol (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 libcurl can be used).(Windows only) The default method for accessing URLs via download.file() and 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).

NEW FEATURES

  • cmdscale() gets new option list. for increased flexibility when a list should be returned.
  • configure now supports texinfo version 6.0, which (unlike the change from 4.x to 5.0) is a minor update. (Wish of PR#16456.)
  • (Non-Windows only) download.file() with default 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 "internal" method for download.file() and url() uses 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 byfile() and url() since R 3.2.0).There are implications for how proxies need to be set (see ?download.file): also, cacheOK = FALSE is not supported.
  • chooseCRANmirror() and chooseBioCmirror() now offer HTTPS mirrors in preference to HTTP mirrors. This changes the interpretation of their ind arguments: see their help pages.
  • capture.output() gets optional arguments type and split to pass to sink(), and hence can be used to capture messages.

C-LEVEL FACILITIES

  • Header ‘Rconfig.h’ now defines HAVE_ALLOCA_H if the platform has the ‘alloca.h’ header (it is needed to define alloca on Solaris and AIX, at least: see ‘Writing R Extensions’ for how to use it).

INSTALLATION and INCLUDED SOFTWARE

  • The libtool script generated by configure has been modified to support FreeBSD >= 10 (PR#16410).

BUG FIXES

  • The HTML help page links to demo code failed due to a change in R 3.2.0. (PR#16432)
  • If the na.action argument 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 x was an object of type "expression".
  • 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.mark which together with other changes, e.g., the default for decimal.mark, fixes some format()ting variants with non-defaultgetOption("OutDec") such as in PR#16411.
  • download.packages() failed for type equal to either "both" or "binary". (Reported by Dan Tenenbaum.)
  • The dendrogram method of labels() is much more efficient for large dendrograms, now usingrapply(). (Comment #15 of PR#15215)
  • The "port" algorithm of 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 NaN. (PR#16475)
  • 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.
  • polym() gains a coefs = NULL argument and returns class "poly" just like poly() which gets a new simple=FALSE option. They now lead to correct predict()ions, e.g., on subsets of the original data.
  • rhyper(nn, <large>) now works correctly. (PR#16489)
  • ttkimage() did not (and could not) work so was removed. Ditto for tkimage.cget() andtkimage.configure(). Added two Ttk widgets and missing subcommands for Tk’s imagecommand: ttkscale(), ttkspinbox(), tkimage.delete(), tkimage.height(), tkimage.inuse(),tkimage.type(), tkimage.types(), tkimage.width(). (PR#15372, PR#16450)
  • getClass("foo") now also returns a class definition when it is found in the cache more than once.

Rlogo

7 thoughts on “R 3.2.2 is released”

  1. I really love the installr package, it makes installing and updating R really easy. It may seam obvious from the changes, but updating from 3.2.1 to 3.2.2 required running ‘setInternet2(TRUE)’ first. I wished to have something similar on the Mac. But on the Mac installation requires sudo which is not so easy from a running R-session. Thanks!

    1. Thanks Peter.
      It seems that not all people need the setInternet, but I’ll update the post to help those who do.

      Best,
      Tal

    1. Hi Duleep,
      If you upgrade R using installr, you are given the option to copy packages from the old R version to the new one. That would make installr available to you in the new R version as well.

      Best,
      Tal

Leave a Reply