R 3.0.2 (codename “Frisbee Sailing”) was released yesterday. The full list of new features and bug fixes is provided below.

Also, RStudio v0.98 (in a “secret” preview) was announced two days ago with MANY new features, including:

Amazing new debugging tools(!)

An engine for creating R presentations. You can see a detailed example for using the new R presentation capabilities in THIS LINK (linking to a presentation on Creating beautiful trees of clusterings with R using the dendextend R package, here is a link to the Rpres source file).

Various other enhancements (I like the new code folding for markdown headings/sections) and bug-fixes. Follow THIS LINK for a complete list of new features in this recent RStudio release.

Upgrading to R 3.0.2

You can download the latest version from here. Or, if you are using Windows, you can upgrade to the latest version using the installr package (also available on CRAN and github). Simply run the following code:

# installing/loading the package: if ( ! require ( installr ) ) { install. packages ( "installr" ) ; require ( installr ) } #load / install+load installr updateR ( to_checkMD5sums = FALSE ) # the use of to_checkMD5sums is because of a slight bug in the MD5 file on R 3.0.2. This issue is already resolved in the installr version on github, and will be released into CRAN in about a month from now..

I try to keep the installr package updated and useful. If you have any suggestions or remarks on the package, you’re invited to leave a comment below.

If you use the global library system (as I do), you can run the following in the new version of R:

source ( "http://www.r-statistics.com/wp-content/uploads/2010/04/upgrading-R-on-windows.r.txt" ) New. R . RunMe ( )

p.s: you can also use the installr package to quickly install the new RStudio by using:

# installing/loading the package: if ( ! require ( installr ) ) { install. packages ( "installr" ) ; require ( installr ) } #load / install+load installr install. RStudio ( )

R 3.0.2 NEWS:

NEW FEATURES

The ‘NEWS’ files have been re-organized. This file contains news for R >= 3.0.0: news for the 0.x.y, 1.x.y and 2.x.y releases is in files ‘NEWS.0’, ‘NEWS.1’ and ‘NEWS.2’. The latter files are now installed when R is installed. An HTML version of news from 2.10.0 to 2.15.3 is available as ‘doc/html/NEWS.2.html’.

sum() for integer arguments now uses an integer accumulator of at least 64 bits and so will be more accurate in the very rare case that a cumulative sum exceeds 2^53 (necessarily summing more than 4 million elements).

for integer arguments now uses an integer accumulator of at least 64 bits and so will be more accurate in the very rare case that a cumulative sum exceeds (necessarily summing more than 4 million elements). The example() and tools::Rd2ex() functions now have parameters to allow them to ignore \dontrun markup in examples. (Suggested by Peter Solymos.)

and functions now have parameters to allow them to ignore markup in examples. (Suggested by Peter Solymos.) str(x) is considerably faster for very large lists, or factors with 100,000 levels, the latter as in PR#15337.

is considerably faster for very large lists, or factors with 100,000 levels, the latter as in PR#15337. col2rgb() now converts factors to character strings not integer codes (suggested by Bryan Hanson).

now converts factors to character strings not integer codes (suggested by Bryan Hanson). tail(warnings()) now works, via the new `[` method.

now works, via the new method. There is now support for the LaTeX style file ‘zi4.sty’ which has in some distributions replaced ‘inconsolata.sty’.

unlist(x) now typically returns all non-list x s unchanged, not just the “vector” ones. Consequently, format(lst) now also works when the list lst has non-vector elements.

now typically returns all non-list s unchanged, not just the “vector” ones. Consequently, now also works when the list has non-vector elements. The tools::getVignetteInfo() function has been added to give information about installed vignettes.

function has been added to give information about installed vignettes. New assertCondition() , etc. utilities in tools, useful for testing.

, etc. utilities in tools, useful for testing. Profiling now records non-inlined calls from byte-compiled code to BUILTIN functions.

functions. Various functions in stats and elsewhere that use non-standard evaluation are now more careful to follow the namespace scoping rules. E.g. stats::lm() can now find stats::model.frame() even if stats is not on the search path or if some package defines a function of that name.

can now find even if stats is not on the search path or if some package defines a function of that name. If an invalid/corrupt .Random.seed object is encountered in the workspace it is ignored with a warning rather than giving an error. (This allows R itself to rely on a working RNG, e.g. to choose a random port.)

object is encountered in the workspace it is ignored with a warning rather than giving an error. (This allows itself to rely on a working RNG, e.g. to choose a random port.) seq() and seq.int() give more explicit error messages if called with invalid (e.g. NaN ) inputs.

and give more explicit error messages if called with invalid (e.g. ) inputs. When parse() finds a syntax error, it now makes partial parse information available up to the location of the error. (Request of Reijo Sund.)

finds a syntax error, it now makes partial parse information available up to the location of the error. (Request of Reijo Sund.) Methods invoked by NextMethod() had a different dynamic parent to the generic. This was causing trouble where S3 methods invoked via lazy evaluation could lose track of their generic. (PR#15267)

had a different dynamic parent to the generic. This was causing trouble where S3 methods invoked via lazy evaluation could lose track of their generic. (PR#15267) Code for the negative binomial distribution now treats the case size == 0 as a one-point distribution at zero.

as a one-point distribution at zero. abbreviate() handles without warning non-ASCII input strings which require no abbreviation.

handles without warning non-ASCII input strings which require no abbreviation. read.dcf() no longer has a limit of 8191 bytes per line. (Wish of PR#15250.)

no longer has a limit of 8191 bytes per line. (Wish of PR#15250.) formatC(x) no longer copies the class of x to the result, to avoid misuse creating invalid objects as in PR#15303. A warning is given if a class is discarded.

no longer copies the class of to the result, to avoid misuse creating invalid objects as in PR#15303. A warning is given if a class is discarded. Dataset npk has been copied from MASS to allow more tests to be run without recommended packages being installed.

has been copied from MASS to allow more tests to be run without recommended packages being installed. The initialization of the regression coefficients for non-degenerate differenced models in arima() has been changed and in some examples avoids a local maximum. (PR#15396)

has been changed and in some examples avoids a local maximum. (PR#15396) termplot() now has an argument transform.x to control the display of individual terms in the plot. (PR#15329)

now has an argument to control the display of individual terms in the plot. (PR#15329) format() now supports digits = 0 , to display nsmall decimal places.

now supports , to display decimal places. There is a new read-only par() parameter called "page" , which returns a logical value indicating whether the next plot.new() call will start a new page.

parameter called , which returns a logical value indicating whether the next call will start a new page. Processing Sweave and Rd documents to PDF now renders backticks and single quotes better in several instances, including in \code and \samp expressions.

utils::modifyList() gets a new argument keep.null allowing NULL components in the replacement to be retained, instead of causing corresponding components to be deleted.

gets a new argument allowing components in the replacement to be retained, instead of causing corresponding components to be deleted. tools::pkgVignettes() gains argument check ; if set to TRUE , it will warn when it appears a vignette requests a non-existent vignette engine.

UTILITIES

R CMD check --as-cran checks the line widths in usage and examples sections of the package Rd files.

checks the line widths in usage and examples sections of the package Rd files. R CMD check --as-cran now implies –timings.

now implies –timings. R CMD check looks for command gfile if a suitable file is not found. (Although file is not from GNU, OpenCSW on Solaris installs it as gfile .)

looks for command if a suitable is not found. (Although is not from GNU, OpenCSW on Solaris installs it as .) R CMD build (with the internal tar ) checks the permissions of ‘configure’ and ‘cleanup’ files and adds execute permission to the recorded permissions for these files if needed, with a warning. This is useful on OSes and file systems which do not support execute permissions (notably, on Windows).

(with the internal ) checks the permissions of ‘configure’ and ‘cleanup’ files and adds execute permission to the recorded permissions for these files if needed, with a warning. This is useful on OSes and file systems which do not support execute permissions (notably, on Windows). R CMD build now weaves and tangles all vignettes, so suggested packages are not required during package installation if the source tarball was prepared with current R CMD build .

now weaves and tangles all vignettes, so suggested packages are not required during package installation if the source tarball was prepared with current . checkFF() (used by R CMD check ) does a better job of detecting calls from other packages, including not reporting those where a function has been copied from another namespace (e.g. as a default method). It now reports calls where .NAME is a symbol registered in another package.

(used by ) does a better job of detecting calls from other packages, including not reporting those where a function has been copied from another namespace (e.g. as a default method). It now reports calls where is a symbol registered in another package. On Unix-alike systems, R CMD INSTALL now installs packages group writably whenever the library ( lib.loc ) is group writable. Hence, update.packages() works for other group members (suggested originally and from a patch by Dirk Eddelbuettel).

now installs packages group writably whenever the library ( ) is group writable. Hence, works for other group members (suggested originally and from a patch by Dirk Eddelbuettel). R CMD javareconf now supports the use of symbolic links for JAVA_HOME on platforms which have realpath . So it is now possible to use R CMD javareconf JAVA_HOME=/usr/lib/jvm/java-1.7.0 on a Linux system and record that value rather than the frequently-changing full path such as ‘/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.25.x86_64’.

now supports the use of symbolic links for JAVA_HOME on platforms which have . So it is now possible to use (Windows only.) Rscript -e requires a non-empty argument for consistency with Unix versions of R . (Also Rterm -e and R -e .)

requires a non-empty argument for consistency with Unix versions of . (Also and .) R CMD check does more thorough checking of declared packages and namespaces. It reports packages declared in more than one of the Depends, Imports, Suggests and Enhances fields of the ‘DESCRIPTION’ file. namespaces declared in Imports but not imported from, neither in the ‘NAMESPACE’ file nor using the :: nor ::: operators. packages which are used in library() or requires() calls in the R code but were already put on the search path via Depends. packages declared in Depends not imported via the ‘NAMESPACE’ file (except the standard packages). Objects used from Depends packages should be imported to avoid conflicts and to allow correct operation when the namespace is loaded but not attached. objects imported via ::: calls where :: would do. objects imported by :: which are not exported. objects imported by ::: calls which do not exist. See ‘Writing R Extensions’ for good practice.

does more thorough checking of declared packages and namespaces. It reports R CMD check optionally checks for non-standard top-level files and directories (which are often mistakes): this is enabled for –as-cran.

optionally checks for non-standard top-level files and directories (which are often mistakes): this is enabled for –as-cran. LaTeX style file upquote.sty is no longer included (the version was several years old): it is no longer used in R . A much later version is commonly included in LaTeX distributions but does not play well with the ae fonts which are the default for Sweave vignettes.

is no longer included (the version was several years old): it is no longer used in . A much later version is commonly included in LaTeX distributions but does not play well with the fonts which are the default for Sweave vignettes. R CMD build makes more use of the ‘build’ sub-directory of package sources, for example to record information about the vignettes.

INSTALLATION and INCLUDED SOFTWARE

The macros used for the texinfo manuals have been changed to work better with the incompatible changes made in texinfo 5.x .

. The minimum version for a system xz library is now 5.0.3 (was 4.999). This is in part to avoid 5.0.2, which can compress in ways other versions cannot decompress.

library is now 5.0.3 (was 4.999). This is in part to avoid 5.0.2, which can compress in ways other versions cannot decompress. The included version of PCRE has been updated to 8.33.

The included version of zlib has been updated to 1.2.8, a bug-fix release.

has been updated to 1.2.8, a bug-fix release. The included version of xz utils’s liblzma has been updated to 5.0.5.

has been updated to 5.0.5. Since javareconf (see above) is used when R is installed, a stable link for JAVA_HOME can be supplied then.

(see above) is used when is installed, a stable link for JAVA_HOME can be supplied then. Configuring with –disable-byte-compilation will override the ‘DESCRIPTION’ files of recommended packages, which typically require byte-compilation.

More of the installation and checking process will work even when TMPDIR is set to a path containing spaces, but this is not recommended and external software (such as texi2dvi ) may fail.

PACKAGE INSTALLATION

Installation is aborted immediately if a LinkingTo package is not installed.

package is not installed. R CMD INSTALL has a new option --no-byte-compile which will override a ByteCompile field in the package’s ‘DESCRIPTION’ file.

has a new option which will override a ByteCompile field in the package’s ‘DESCRIPTION’ file. License BSD is deprecated: use BSD_3_clause or BSD_2_clause instead. License X11 is deprecated: use MIT or BSD_2_clause instead.

Version requirements for LinkingTo packages are now recognized: they are checked at installation. (Fields with version requirements were previously silently ignored.)

packages are now recognized: they are checked at installation. (Fields with version requirements were previously silently ignored.) The limit of 500 S3method entries in a NAMESPACE file has been removed.

entries in a file has been removed. The default ‘version’ of Bioconductor for its packages has been changed to the upcoming 2.13, but this can be set by the environment variable R_BIOC_VERSION, e.g. in file ‘Renviron.site’.

C-LEVEL FACILITIES

‘Rdefines.h’ has been tweaked so it can be included in C++ code after ‘R_ext/Boolean.h’ (which is included by ‘R.h’). Note that ‘Rdefines.h’ is not kept up-to-date, and ‘Rinternals.h’ is preferred for new code.

eval and applyClosure are now protected against package code supplying an invalid rho .

DEPRECATED AND DEFUNCT

The unused namespace argument to package.skeleton() is now formally deprecated and will be removed in R 3.1.0.

argument to is now formally deprecated and will be removed in 3.1.0. plclust() is deprecated: use the plot() method for class "hclust" instead.

is deprecated: use the method for class instead. Functions readNEWS() and checkNEWS() in package tools are deprecated (and they have not worked with current ‘NEWS’ files for a long time).

DOCUMENTATION

‘An Introduction to R’ has a new chapter on using R as a scripting language including interacting with the OS.

BUG FIXES

help.request() could not determine the current version of R on CRAN. (PR#15241)

could not determine the current version of on CRAN. (PR#15241) On Windows, file.info() failed on root directories unless the path was terminated with an explicit "." . (PR#15302)

failed on root directories unless the path was terminated with an explicit . (PR#15302) The regmatches replacement function mishandled results coming from regexpr() . (PR#15311)

The help for setClass() and representation() still suggested the deprecated argument representation= . (PR#15312)

and still suggested the deprecated argument . (PR#15312) R CMD config failed in an installed build of R 3.0.1 (only) when a sub-architecture was used. (Reported by Berwin Turlach.)

failed in an installed build of 3.0.1 (only) when a sub-architecture was used. (Reported by Berwin Turlach.) On Windows, the installer modified the ‘etc/Rconsole’ and ‘etc/Rprofile.site’ files even when default options were chosen, so the MD5 sums did not refer to the installed versions. (Reported by Tal Galili.)

plot(hclust(), cex =) respects cex again (and possibly others similarly). (Reported by Peter Langfelder.)

respects again (and possibly others similarly). (Reported by Peter Langfelder.) If multiple packages were checked by R CMD check , and one was written for a different OS, it would set --no-install for all following packages as well as itself.

, and one was written for a different OS, it would set for all following packages as well as itself. qr.coef() and related functions did not properly coerce real vectors to complex when necessary. (PR#15332)

and related functions did not properly coerce real vectors to complex when necessary. (PR#15332) ftable(a) now fixes up empty dimnames such that the result is printable.

now fixes up empty such that the result is printable. package.skeleton() was not starting its search for function objects in the correct place if environment was supplied. (Reported by Karl Forner.)

was not starting its search for function objects in the correct place if was supplied. (Reported by Karl Forner.) Parsing code was changing the length field of vectors and confusing the memory manager. (PR#15345)

The Fortran routine ZHER2K in the reference BLAS had a comment-out bug in two places. This caused trouble with eigen() for Hermitian matrices. (PR#15345 and report from Robin Hankin)

in the reference BLAS had a comment-out bug in two places. This caused trouble with for Hermitian matrices. (PR#15345 and report from Robin Hankin) vignette() and browseVignettes() did not display non-Sweave vignettes properly.

and did not display non-Sweave vignettes properly. Two warning/error messages have been corrected: the (optional) warning produced by a partial name match with a pairlist, the error message from a zero-length argument to the : operator. (Found by Radford Neal; PR#15358, PR#15356)

operator. (Found by Radford Neal; PR#15358, PR#15356) svd() returned NULL rather than omitting components as documented. (Found by Radford Neal; PR#15360)

returned rather than omitting components as documented. (Found by Radford Neal; PR#15360) mclapply() and mcparallel() with silent = TRUE could break a process that uses stdout output unguarded against broken pipes (e.g., zip will fail silently). To work around such issues, they now replace stdout with a descriptor pointed to ‘/dev/null’ instead. For this purpose, internal closeStdout and closeStderr functions have gained the to.null flag.

and with could break a process that uses output unguarded against broken pipes (e.g., will fail silently). To work around such issues, they now replace with a descriptor pointed to ‘/dev/null’ instead. For this purpose, internal and functions have gained the flag. log() , signif() and round() now raise an error if a single named argument is not named x . (PR#15361)

, and now raise an error if a single named argument is not named . (PR#15361) deparse() now deparses raw vectors in a form that is syntactically correct. (PR#15369)

now deparses raw vectors in a form that is syntactically correct. (PR#15369) The jpeg driver in Sweave created a JPEG file, but gave it a ‘.png’ extension. (PR#15370)

driver in Sweave created a JPEG file, but gave it a ‘.png’ extension. (PR#15370) Deparsing of infix operators with named arguments is improved. (PR#15350)

mget() , seq.int() and numericDeriv() did not duplicate arguments properly. (PR#15352, PR#15353, PR#15354)

, and did not duplicate arguments properly. (PR#15352, PR#15353, PR#15354) kmeans(algorithm = "Hartigan-Wong") now always stops iterating in the QTran stage. (PR#15364).

now always stops iterating in the QTran stage. (PR#15364). read.dcf() re-allocated incorrectly and so could segfault when called on a file with lines of more than 100 bytes.

re-allocated incorrectly and so could segfault when called on a file with lines of more than 100 bytes. On systems where mktime() does not set errno , the last second before the epoch could not be converted from POSIXlt to POSIXct . (Reported by Bill Dunlap.)

does not set , the last second before the epoch could not be converted from to . (Reported by Bill Dunlap.) add1.glm() miscalculated F-statistics when df > 1. (Bill Dunlap, PR#15386).

miscalculated F-statistics when df > 1. (Bill Dunlap, PR#15386). stem() now discards infinite inputs rather than hanging. (PR#15376)

now discards infinite inputs rather than hanging. (PR#15376) The parser now enforces C99 syntax for floating point hexadecimal constants (e.g. 0x1.1p0 ), rather than returning unintended values for malformed constants. (PR#15234)

), rather than returning unintended values for malformed constants. (PR#15234) model.matrix() now works with very long LHS names (more than 500 bytes). (PR#15377)

now works with very long LHS names (more than 500 bytes). (PR#15377) integrate() reverts to the pre-2.12.0 behaviour: from 2.12.0 to 3.0.1 it sometimes failed to achieve the requested tolerance and reported error estimates that were exceeded. (PR#15219)

reverts to the pre-2.12.0 behaviour: from 2.12.0 to 3.0.1 it sometimes failed to achieve the requested tolerance and reported error estimates that were exceeded. (PR#15219) strptime() now handles %W fields with value 0. (PR#15915)

now handles %W fields with value 0. (PR#15915) R is now better protected against people trying to interact with the console in startup code. (PR#15325)

is now better protected against people trying to interact with the console in startup code. (PR#15325) Subsetting 1D arrays often lost dimnames (PR#15301).

Unary + on a logical vector did not coerce to integer, although unary - did.

on a logical vector did not coerce to integer, although unary did. na.omit() and na.exclude() added a row to a zero-row data frame. (PR#15399)

and added a row to a zero-row data frame. (PR#15399) All the (where necessary cut-down) vignettes are installed if R was configured with –without-recommended-packages.

was configured with –without-recommended-packages. source() did not display filenames when reporting syntax errors.

did not display filenames when reporting syntax errors. Syntax error reports misplaced the caret pointing out the bad token.

(Windows only) Starting R with R (instead of Rterm or Rgui ) would lose any zero-length strings from the command line arguments. (PR#15406)

with (instead of or ) would lose any zero-length strings from the command line arguments. (PR#15406) Errors in the encoding specified on the command line via --encoding=foo were not handled properly. (PR#15405)

were not handled properly. (PR#15405) If x is a symbol, is.vector(x, "name") now returns TRUE , since "name" and "symbol" should be synonyms. (Reported by Herv? Pag?s.)

is a symbol, now returns , since and should be synonyms. (Reported by Herv? Pag?s.) R CMD rtags works on platforms (such as OS X) with a XSI-conformant shell command echo . (PR#15231)

works on platforms (such as OS X) with a XSI-conformant shell command . (PR#15231) is.unsorted(NA) returns false as documented (rather than NA ).

returns false as documented (rather than ). R CMD LINK did not know about sub-architectures.

did not know about sub-architectures. system() and system2() are better protected against users who misguidedly have spaces in the temporary directory path.

and are better protected against users who misguidedly have spaces in the temporary directory path. file.show() and edit() are now more likely to work on file paths containing spaces. (Where external utilities are used, not the norm on Windows nor in R.app which should previously have worked.)

and are now more likely to work on file paths containing spaces. (Where external utilities are used, not the norm on Windows nor in which should previously have worked.) Packages using the methods package are more likely to work when they import it but it is not attached. (Several parts of its C code were looking for its R functions on the search path rather than in its namespace.)

functions on the search path rather than in its namespace.) lgamma(-x) is no longer NaN for very small x.

is no longer for very small x. (Windows) system2() now respects specifying stdout and stderr as files if called from Rgui . (PR#15393)

now respects specifying and as files if called from . (PR#15393) Closing an x11() device whilst locator() or identify() is in progress no longer hangs R . (PR#15253)

device whilst or is in progress no longer hangs . (PR#15253) list.dirs(full.names = FALSE) was not implemented. (PR#15170)

was not implemented. (PR#15170) format() sometimes added unnecessary spaces. (PR#15411)

sometimes added unnecessary spaces. (PR#15411) all.equal(check.names = FALSE) would ignore the request to ignore the names and would check them as attributes.

would ignore the request to ignore the names and would check them as attributes. The symbol set by tools::Rd2txt_options(itemBullet=) was not respected in some locales. (PR#15435)

was not respected in some locales. (PR#15435) mcMap() was not exported by package parallel. (PR#15439)

was not exported by package parallel. (PR#15439) plot() for TukeyHSD objects did not balance dev.hold() and dev.flush() calls on multi-page plots. (PR#15449)