Licence: Freeware
Version 2.13 | Release Date: 2011-04-13 | Download

-- Release Version 1.40 (5751) - supplied with R 2.13.0 --

Last-update: 2011-04-01
* help view responds to <Cmd><Enter> (execute selection)
However, it is only supported for example sections of
help files and involves conversion from HTML so there
may be cases where some more unusual HTML entities
are not converted.

Last-update: 2011-03-29
* auto-saved documents are now restored automatically
after a crash (even if they were unnamed)

Last-update: 2011-03-28
* improved Data Manager
- made table sortable and searchable
- added Refresh List
- now one can select more than one data set to
load them into the workspace

Last-update: 2011-03-24
* auto-save is now enabled in the editor by default
(period is set to 3 minutes) and can be enabled
or disabled in the preferences

Last-update: 2011-03-23 [HJBB]
* improved History
- added possibility to search in History via
regular expression
- pressing ENTER or RETURN will insert selected
item into RConsole
- if History will open for the first time
select last item
- shortcut SHIFT+CMD+H activates history search

Last-update: 2011-03-22 [HJBB]
* Preferences for Editor and Syntax Highlighting
- cleaned preferences
- added 'Highlight current line'
- added 'Indent New Lines'
- added color setting for 'Background' (incl.
- added color seting for 'Current Line'
- added color setting for 'Cursor'

Last-update: 2011-03-21
* fixed crash when adding rows in a data frame
containing strings (PR#14434)

Last update: 2011-03-19 [HJBB]
* Implemented Menu > Format >
- Reinterpret with Encoding...
- Increase Indent (of current line or selection)
- Decrease Indent (of current line or selection)

* Added Menu > Select >
- All
- Word
- Line
- Balanced Brackets

* Fixed on runtime changing of Preference item
'Wrap Lines'

* RConsole and R Editor are listening at two finger
zoom gesture of trackpads to de/increase font size

Last update: 2011-03-18 [HJBB]
* Enabled and implemented Main Menu > File > Revert

* If Match braces/quotes is activated and something is
selected in RConsole or R Editor the typing of ({"'`[
will wrap the selection with the typed character and
its complement

* Fixed MoveToLeftEndOfLine and
moveToLeftEndOfLineAndModifySelection in RConsole
to remain the cursor inside the active input line

Last update: 2011-03-17 [HJBB]
* Improved the Save Panel for R scripts; now it offers
a new list of encodings which is customizable by the
user and displays the names of these encodings
localized. Any changes will be stored permanently.

Last update: 2011-03-17 [HJBB]
* Now the Open Panel allows to open more than one file

Last update: 2011-03-15
* R.app is now more strict about file types. It no
longer attempts to read any file as text. However,
plain text UTI is added such that the GUI can handle
URL and file types that are declared as text.

Last update: 2011-03-14 [HJBB]
* Applied Deepayan Sarkar's base package 'rcompgen'
for code completion. This includes the ability to
complete $ or @ variables and function parameters.
It is customizable by the user via rc.settings()
and rc.options(). More details at the help page for
'rcompgen'. For the R Editor it also works in
multi-line mode.
Examples: [ | := cursor position]

.Platform$| -> will show all names
plot(x, xl|) -> will show 'xlab=' and 'xlim'
plot(|) -> show all parameter

To append e.g. a ( to all functions you can set
rc.settings(func=TRUE). To allow to complete installed
package names set rc.settings(ipck=TRUE); then the
behavior changes for library(|), now one gets a
list of all installed packages.

Last update: 2011-03-04 [HJBB]
* Overhaul of the entire R Script Editor:
- new line numbering including the chance to select
a line by clicking into the gutter or a bunch of lines
by dragging the mouse in the gutter
- improved syntax highlighting by using flex and it'll
be done on demand which increases the speed enormously;
supports multi-line strings etc.
- improved the declared function name parsing; show
names in red if the name is invalid and grayed if the
function is commented out

Last update: 2011-02-13 [HJBB]
* Implemented 'Search in Help files' (generally in each
WebView) via CMD+F etc. if the WebView has the focus.

* The function hint in the status bar of the RConsole
and R Editor tries to follow the current cursor position

* Improved the general closing behavior of windows to
make the last touched window the key window

* Fixed issue for 'Choose New Working Directory'; now the
working directory will be taken by the user's selection
and not the actual current directory inside the panel

* Fixed printing CMD+P of each help page and the RConsole

* Changed the behavior of SHIFT+CMD+N 'New Quartz Device
Window' slightly; after opening it sets the input focus
to RConsole for convenience

Last update: 2011-02-10 [HJBB]
* Added menu item 'Show Help for current Function' CTRL+H
to context menu of RConsole and each Script Editor. It
parses backwards from the current cursor's position to
to find the current function and opens the help page.
If the user did select a text chunk CTRL+H will try
to come up with help page of the selected text.
If nothing was found it sets the focus to the Help
Search Field.

-- Release Version 1.36 (5691) - supplied with R 2.12.2 --

Last update: 2011-02-03
* bug fix: help window no longer pops up when
use.external.help is enabled

Last update: 2011-01-23
* add an option to specify the encoding of the text
file when saving a document.

* add detection and support for Unicode files

* fix help type deprecation in Data Manager

-- Release Version 1.35 (5665) - supplied with R 2.12.1 --
-- (5632) - supplied with R 2.12.0 --

Last update: 2010-10-04
* Add an additional message at startup showing which
history file has been used (if enabled in the history
section of the Startup preferences).

* Added the (all=TRUE) clause to clearing the workspace
(see Sep 26, 2010 email of prof. Ripley).

-- Release Version 1.34 (5589) - supplied with R 2.11.1 --

Last update: 2010-05-23
* When identifying old R versions allow any size of
the minor version (only one character was used before)

* Change q()/quit() to map to the Quit command of the
application. NOTE: the GUI still asks independently
about unsaved documents regardless of the `save'
argument, so unlike command-line R quit("yes")
can be cancelled by the user if there are unsaved

* Change default history file name to .Rapp.history
temporarily until R/R.app history interaction is
resolved. If you are upgrading and experience R GUI
apparently not saving your history, go to Preferences
-> Startup, click on the "Default" button next to the
"R history file" text box and close the preferences.

Version 2.12 | Release Date: 2011-04-01 | Download



• Complex arithmetic (notably z^n for complex z and integer n) gave
incorrect results since R 2.10.0 on platforms without C99 complex
support. This and some lesser issues in trignometric functions
have been corrected.

Such platforms were rare (we know of Cygwin and FreeBSD).
However, because of new compiler optimizations in the way complex
arguments are handled, the same code was selected on x86_64 Linux
with gcc 4.5.x at the default -O2 optimization (but not at -O).

• There is a workaround for crashes seen with several packages on
systems using zlib 1.2.5: see the INSTALLATION section.


• PCRE has been updated to 8.12 (two bug-fix releases since 8.10).

• rep(), seq(), seq.int() and seq_len() report more often when the
first element is taken of an argument of incorrect length.

• The Cocoa back-end for the quartz() graphics device on Mac OS X
provides a way to disable event loop processing temporarily
(useful, e.g., for forked instances of R).

• kernel()'s default for m was not appropriate if coef was a set of
coefficients. (Reported by Pierre Chausse.)

• bug.report() has been updated for the current R bug tracker,
which does not accept emailed submissions.

• R CMD check now checks for the correct use of $(LAPACK_LIBS) (as
well as $(BLAS_LIBS)), since several CRAN recent submissions have
ignored ‘Writing R Extensions’.


• The zlib sources in the distribution are now built with all
symbols remapped: this is intended to avoid problems seen with
packages such as XML and rggobi which link to zlib.so.1 on
systems using zlib 1.2.5.

• The default for FFLAGS and FCFLAGS with gfortran on x86_64 Linux
has been changed back to -g -O2: however, setting -g -O may still
be needed for gfortran 4.3.x.


• A LazyDataCompression field in the DESCRIPTION file will be used
to set the value for the --data-compress option of R CMD INSTALL.

• Files R/sysdata.rda of more than 1Mb are now stored in the
lazyload daabase using xz compression: this for example halves
the installed size of package Imap.

• R CMD INSTALL now ensures that directories installed from inst
have search permission for everyone.

It no longer installs files inst/doc/Rplots.ps and
inst/doc/Rplots.pdf. These are almost certainly left-overs from
Sweave runs, and are often large.


• The ‘experimental’ alternative specification of a name space via
.Export() etc is now deprecated.

• zip.file.extract() is now deprecated.

• Zip-ing data sets in packages (and hence R CMD INSTALL
--use-zip-data and the ZipData: yes field in a DESCRIPTION file)
is deprecated: using efficiently compressed .rda images and
lazy-loading of data has superseded it.


• identical() could in rare cases generate a warning about
non-pairlist attributes on CHARSXPs. As these are used for
internal purposes, the attribute check should be skipped.
(Reported by Niels Richard Hansen).

• If the filename extension (usually .Rnw) was not included in a
call to Sweave(), source references would not work properly and
the keep.source option failed. (PR#14459)

• format.data.frame() now keeps zero character column names.

• pretty(x) no longer raises an error when x contains solely
non-finite values. (PR#14468)

• The plot.TukeyHSD function now uses a line width of 0.5 for its
reference lines rather than lwd = 0 (which caused problems for
some PDF and PostScript viewers).

• The big.mark argument to prettyNum(), format(), etc. was inserted
reversed if it was more than one character long.

• R CMD check failed to check the filenames under man for Windows'
reserved names.

• The "Date" and "POSIXt" methods for seq() could overshoot when to
was supplied and by was specified in months or years.

• The internal method of untar() now restores hard links as file
copies rather than symbolic links (which did not work for
cross-directory links).

• unzip() did not handle zip files which contained filepaths with
two or more leading directories which were not in the zipfile and
did not already exist. (It is unclear if such zipfiles are valid
and the third-party C code used did not support them, but
PR#14462 created one.)

• combn(n, m) now behaves more regularly for the border case m = 0.

• The rendering of numbers in plotmath expressions (e.g.
expression(10^2)) used the current settings for conversion to
strings rather than setting the defaults, and so could be
affected by what has been done before. (PR#14477)

• The methods of napredict() and naresid() for na.action =
na.exclude fits did not work correctly in the very rare event
that every case had been omitted in the fit. (Reported by Simon

• weighted.residuals(drop0=TRUE) returned a vector when the
residuals were a matrix (e.g. those of class "mlm"). (Reported
by Bill Dunlap.)

• Package HTML index files <pkg>/html/00Index.html were generated
with a stylesheet reference that was not correct for static
browsing in libraries.

• ccf(na.action = na.pass) was not implemented.

• The parser accepted some incorrect numeric constants, e.g. 20×2.
(Reported by Olaf Mersmann.)

• format(*, zero.print) did not always replace the full zero parts.

• Fixes for subsetting or subassignment of "raster" objects when
not both i and j are specified.

• R CMD INSTALL was not always respecting the ZipData: yes field of
a DESCRIPTION file (although this is frequently incorrectly
specified for packages with no data or which specify lazy-loading
of data).

R CMD INSTALL --use-zip-data was incorrectly implemented as
--use-zipdata since R 2.9.0.

• source(file, echo=TRUE) could fail if the file contained #line
directives. It now recovers more gracefully, but may still
display the wrong line if the directive gives incorrect

• atan(1i) returned NaN+Infi (rather than 0+Infi) on platforms
without C99 complex support.

• library() failed to cache S4 metadata (unlike loadNamespace())
causing failures in S4-using packages without a namespace (e.g.
those using reference classes).

• The function qlogis(lp, log.p=TRUE) no longer prematurely
overflows to Inf when exp(lp) is close to 1.

• Updating S4 methods for a group generic function requires
resetting the methods tables for the members of the group (patch
contributed by Martin Morgan).

• In some circumstances (including for package XML), R CMD INSTALL
installed version-control directories from source packages.

• Added PROTECT calls to some constructed expressions used in C
level eval calls.

• utils:::create.post() (used by bug.report() and help.request())
failed to quote arguments to the mailer, and so often failed.

• bug.report() was naive about how to extract maintainer email
addresses from package descriptions, so would often try mailing
to incorrect addresses.

• debugger() could fail to read the environment of a call to a
function with a ... argument. (Reported by Charlie Roosen.)

• prettyNum(c(1i, NA), drop0=TRUE) or str(NA_complex_) now work



• The DVI/PDF reference manual now includes the help pages for all
the standard packages: splines, stats4 and tcltk were previously
omitted (intentionally).

• <URL: http://www.rforge.net> has been added to the default set of
repositories known to setRepositories().

• xz-utils has been updated to version 5.0.0.

• reshape() now makes use of sep when forming names during
reshaping to wide format. (PR#14435)

• legend() allows the length of lines to be set by the end user
via the new argument seg.len.

• New S4 reference class utility methods copy(), field(),
getRefClass() and getClass() have been added to package methods.

• When a character value is used for the EXPR argument in switch(),
a warning is given if more than one unnamed alternative value is
given. This will become an error in R 2.13.0.

• StructTS now allows series with just two seasons.
(Reported by Birgit Erni.)


• The PDF reference manual is now built as PDF version 1.5 with
object compression, which on platforms for which this is not the
default (notably MiKTeX) halves its size.

• Variable FCLIBS can be set during configuration, for any
additional library flags needed when linking a shared object with
the Fortran 9x compiler. (Needed with Solaris Studio 12.2.)


• seq.int() no longer sometimes evaluates arguments twice.

• The data.frame method of format() failed if a column name was
longer than 256 bytes (the maximum length allowed for an R name).

• predict(<lm object>, type ="terms", ...) failed if both terms and
interval were specified. (Reported by Bill Dunlap.)

Also, if se.fit = TRUE the standard errors were reported for all
terms, not just those selected by a non-null terms.

• The TRE regular expressions engine could terminate R rather than
give an error when given certain invalid regular expressions.

• cmdscale(eig = TRUE) was documented to return n-1 eigenvalues but
in fact only returned k. It now returns all n eigenvalues.

cmdscale(add = TRUE) failed to centre the return configuration
and sometimes lost the labels on the points. Its return value
was described wrongly (it is always a list and contains component

• promptClass() in package methods now works for reference classes
and gives a suitably specialized skeleton of documentation.

Also, callSuper() now works via the methods() invocation as well
as for initially specified methods.

• download.file() could leave the destination file open if the URL
was not able to be opened. (PR#14414)

• Assignment of an environment to functions or as an attribute to
other objects now works for S4 subclasses of "environment".

• Use of [[<- for S4 subclasses of "environment" generated an
infinite recursion from the method. The method has been replaced
by internal code.

• In a reference class S4 method, callSuper() now works in
initialize() methods when there is no explicit superclass method.

• ! dropped attributes such as names and dimensions from a
length-zero argument. (PR#14424)

• When list2env() created an environment it was missing a PROTECT
call and so was vulnerable to garbage collection.

• Sweave() with keep.source=TRUE dropped comments at the start and
end of code chunks. It could also fail when \SweaveInput was
combined with named chunks.

• The Fortran code used by nls(algorithm = "port") could
infinite-loop when compiled with high optimization on a modern
version of gcc, and SAFE_FFLAGS is now used to make this less
likely. (PR#14427, seen with 32-bit Windows using gcc 4.5.0 used
from R 2.12.0.)

• sapply() with default simplify = TRUE and mapply() with default
SIMPLIFY = TRUE wrongly simplified language-like results, as,
e.g., in mapply(1:2, c(3,7), FUN = function(i,j) call(':',i,j)).

• Backreferences to undefined patterns in [g]sub(pcre = TRUE) could
cause a segfault. (PR#14431)

• The format() (and hence the print()) method for class "Date"
rounded fractional dates towards zero: it now always rounds them

• Reference S4 class creation could generate ambiguous inheritance
patterns under very special circumstances.

• [[<- turned S4 subclasses of "environment" into plain

• Long titles for help pages were truncated in package indices and
a few other places.

• Additional utilities now work correctly with S4 subclasses of
"environment" (rm, locking tools and active bindings).

• spec.ar() now also work for the "ols" method. (Reported by
Hans-Ruedi Kuensch.)

• The initialization of objects from S4 subclasses of "environment"
now allocates a new environment object.

• R CMD check has more protection against (probably erroneous)
example or test output which is invalid in the current locale.

• qr.X() with column names and pivoting now also pivots the column
names. (PR#14438)

• unit.pmax() and unit.pmin() in package grid gave incorrect
results when all inputs were of length 1. (PR#14443)

• The parser for NAMESPACE files ignored misspelled directives,
rather than signalling an error. For 2.12.x a warning will be
issued, but this will be correctly reported as an error in later
releases. (Reported by Charles Berry.)

• Fix for subsetting of "raster" objects when only one of i or j is

• grid.raster() in package grid did not accept "nativeRaster"
objects (like rasterImage() does).

• Rendering raster images in PDF output was resetting the clipping

• Rendering of raster images on Cairo X11 device was wrong,
particularly when a small image was being scaled up using

With Cairo < 1.6, will be better than before, though still a
little clunky. With Cairo >= 1.6, should be sweet as.

• Several bugs fixed in read.DIF: single column inputs caused
errors, cells marked as "character" could be converted to other
types, and (in Windows) copying from the clipboard failed.



• Reading a package's CITATION file now defaults to ASCII rather
than Latin-1: a package with a non-ASCII CITATION file should
declare an encoding in its DESCRIPTION file and use that encoding
for the CITATION file.

• difftime() now defaults to the "tzone" attribute of "POSIXlt"
objects rather than to the current timezone as set by the default
for the tz argument. (Wish of PR#14182.)

• pretty() is now generic, with new methods for "Date" and "POSIXt"
classes (based on code contributed by Felix Andrews).

• unique() and match() are now faster on character vectors where
all elements are in the global CHARSXP cache and have unmarked
encoding (ASCII). Thanks to Matthew Dowle for suggesting
improvements to the way the hash code is generated in unique.c.

• The enquote() utility, in use internally, is exported now.

• .C() and .Fortran() now map non-zero return values (other than
NA_LOGICAL) for logical vectors to TRUE: it has been an implicit
assumption that they are treated as true.

• The print() methods for "glm" and "lm" objects now insert
linebreaks in long calls in the same way that the print() methods
for "summary.[g]lm" objects have long done. This does change the
layout of the examples for a number of packages, e.g. MASS.

• constrOptim() can now be used with method "SANN". (PR#14245)

It gains an argument hessian to be passed to optim(), which
allows all the ... arguments to be intended for f() and grad().

• curve() now allows expr to be an object of mode "expression" as
well as "call" and "function".

• The "POSIX[cl]t" methods for Axis() have been replaced by a
single method for "POSIXt".

There are no longer separate plot() methods for "POSIX[cl]t" and
"Date": the default method has been able to handle those classes
for a long time. This inter alia allows a single date-time
object to be supplied, the wish of PR#14016.

The methods had a different default ("") for xlab.

• Classes "POSIXct", "POSIXlt" and "difftime" have generators
.POSIXct(), .POSIXlt() and .difftime(). Package authors are
advised to make use of them (they are available from R 2.11.0) to
proof against planned future changes to the classes.

The ordering of the classes has been changed, so "POSIXt" is now
the second class. See the document ‘Updating packages for
changes in R 2.12.x’ on <URL: http://developer.r-project.org> for
the consequences for a handful of CRAN packages.

• The "POSIXct" method of as.Date() allows a timezone to be
specified (but still defaults to UTC).

• New list2env() utility function as an inverse of
as.list(<environment>) and for fast multi-assign() to existing
environment. as.environment() is now generic and uses list2env()
as list method.

• There are several small changes to output which ‘zap’ small
numbers, e.g. in printing quantiles of residuals in summaries
from "lm" and "glm" fits, and in test statistics in

• Special names such as "dim", "names", etc, are now allowed as
slot names of S4 classes, with "class" the only remaining

• File .Renviron can have architecture-specific versions such as
.Renviron.i386 on systems with sub-architectures.

• installed.packages() has a new argument subarch to filter on

• The summary() method for packageStatus() now has a separate
print() method.

• The default summary() method returns an object inheriting from
class "summaryDefault" which has a separate print() method that
calls zapsmall() for numeric/complex values.

• The startup message now includes the platform and if used,
sub-architecture: this is useful where different
(sub-)architectures run on the same OS.

• The getGraphicsEvent() mechanism now allows multiple windows to
return graphics events, through the new functions
setGraphicsEventHandlers(), setGraphicsEventEnv(), and
getGraphicsEventEnv(). (Currently implemented in the windows()
and X11 devices.)

• tools::texi2dvi() gains an index argument, mainly for use by R
CMD Rd2pdf.

It avoids the use of texindy by texinfo's texi2dvi >= 1.157,
since that does not emulate 'makeindex' well enough to avoid
problems with special characters (such as (, {, !) in indices.

• The ability of readLines() and scan() to re-encode inputs to
marked UTF-8 strings on Windows since R 2.7.0 is extended to
non-UTF-8 locales on other OSes.

• scan() gains a fileEncoding argument to match read.table().

• points() and lines() gain "table" methods to match plot(). (Wish
of PR#10472.)

• Sys.chmod() allows argument mode to be a vector, recycled along

• There are |, & and xor() methods for classes "octmode" and
"hexmode", which work bitwise.

R_PDFLATEXCMD are no longer used nor set in an R session. (With
the move to tools::texi2dvi(), the conventional environment
variables LATEX, MAKEINDEX and PDFLATEX will be used.
options("dvipscmd") defaults to the value of DVIPS, then to

• New function isatty() to see if terminal connections are

• summaryRprof() returns the sampling interval in component
sample.interval and only returns in by.self data for functions
with non-zero self times.

• print(x) and str(x) now indicate if an empty list x is named.

• install.packages() and remove.packages() with lib unspecified and
multiple libraries in .libPaths() inform the user of the library
location used with a message rather than a warning.

• There is limited support for multiple compressed streams on a
file: all of [bgx]zfile() allow streams to be appended to an
existing file, but bzfile() reads only the first stream.

• Function person() in package utils now uses a given/family scheme
in preference to first/middle/last, is vectorized to handle an
arbitrary number of persons, and gains a role argument to specify
person roles using a controlled vocabulary (the MARC relator

• Package utils adds a new "bibentry" class for representing and
manipulating bibliographic information in enhanced BibTeX style,
unifying and enhancing the previously existing mechanisms.

• A bibstyle() function has been added to the tools package with
default JSS style for rendering "bibentry" objects, and a
mechanism for registering other rendering styles.

• Several aspects of the display of text help are now customizable
using the new Rd2txt_options() function.
options("help_text_width") is no longer used.

• Added \href tag to the Rd format, to allow hyperlinks to URLs
without displaying the full URL.

• Added \newcommand and \renewcommand tags to the Rd format, to
allow user-defined macros.

• New toRd() generic in the tools package to convert objects to
fragments of Rd code, and added "fragment" argument to Rd2txt(),
Rd2HTML, and Rd2latex() to support it.

• Directory R_HOME/share/texmf now follows the TDS conventions, so
can be set as a texmf tree (‘root directory’ in MiKTeX parlance).

• S3 generic functions now use correct S4 inheritance when
dispatching on an S4 object. See ?Methods, section on “Methods
for S3 Generic Functions” for recommendations and details.

• format.pval() gains a ... argument to pass arguments such as
nsmall to format(). (Wish of PR#9574)

• legend() supports title.adj. (Wish of PR#13415)

• Added support for subsetting "raster" objects, plus assigning to
a subset, conversion to a matrix (of colour strings), and
comparisons (== and !=).

• Added a new parseLatex() function (and related functions
deparseLatex() and latexToUtf8()) to support conversion of
bibliographic entries for display in R.

• Text rendering of \itemize in help uses a Unicode bullet in UTF-8
and most single-byte Windows locales.

• Added support for polygons with holes to the graphics engine.
This is implemented for the pdf(), postscript(),
x11(type="cairo"), windows(), and quartz() devices (and
associated raster formats), but not for x11(type="Xlib") or
xfig() or pictex(). The user-level interface is the polypath()
function in graphics and grid.path() in grid.

• File NEWS is now generated at installation with a slightly
different format: it will be in UTF-8 on platforms using UTF-8,
and otherwise in ASCII. There is also a PDF version, NEWS.pdf,
installed at the top-level of the R distribution.

• kmeans(x, 1) now works. Further, kmeans now returns between and
total sum of squares.

• arrayInd() and which() gain an argument useNames. For arrayInd,
the default is now false, for speed reasons.

• As is done for closures, the default print method for the formula
class now displays the associated environment if it is not the
global environment.

• A new facility has been added for inserting code into a package
without re-installing it, to facilitate testing changes which can
be selectively added and backed out. See ?insertSource.

• New function readRenviron to (re-)read files in the format of
~/.Renviron and Renviron.site.

• require() will now return FALSE (and not fail) if loading the
package or one of its dependencies fails.

• aperm() now allows argument perm to be a character vector when
the array has named dimnames (as the results of table() calls
do). Similarly, array() allows MARGIN to be a character vector.
(Based on suggestions of Michael Lachmann.)

• Package utils now exports and documents functions
aspell_package_Rd_files() and aspell_package_vignettes() for
spell checking package Rd files and vignettes using Aspell,
Ispell or Hunspell.

• Package news can now be given in Rd format, and news() prefers
these inst/NEWS.Rd files to old-style plain text NEWS or
inst/NEWS files.

• New simple function packageVersion().

• The PCRE library has been updated to version 8.10.

• The standard Unix-alike terminal interface declares its name to
readline as 'R', so that can be used for conditional sections in
~/.inputrc files.

• ‘Writing R Extensions’ now stresses that the standard sections in
.Rd files (other than \alias, \keyword and \note) are intended to
be unique, and the conversion tools now drop duplicates with a

The .Rd conversion tools also warn about an unrecognized type in
a \docType section.

• ecdf() objects now have a quantile() method.

• format() methods for date-time objects now attempt to make use of
a "tzone" attribute with "%Z" and "%z" formats, but it is not
always possible. (Wish of PR#14358.)

• tools::texi2dvi(file, clean = TRUE) now works in more cases (e.g.
where emulation is used and when file is not in the current

• New function droplevels() to remove unused factor levels.

• system(command, intern = TRUE) now gives an error on a Unix-alike
(as well as on Windows) if command cannot be run. It reports a
non-success exit status from running command as a warning.

On a Unix-alike an attempt is made to return the actual exit
status of the command in system(intern = FALSE): previously this
had been system-dependent but on POSIX-compliant systems the
value return was 256 times the status.

• system() has a new argument ignore.stdout which can be used to
(portably) ignore standard output.

• system(intern = TRUE) and pipe() connections are guaranteed to be
available on all builds of R.

• Sys.which() has been altered to return "" if the command is not
found (even on Solaris).

• A facility for defining reference-based S4 classes (in the OOP
style of Java, C++, etc.) has been added experimentally to
package methods; see ?ReferenceClasses.

• The predict method for "loess" fits gains an na.action argument
which defaults to na.pass rather than the previous default of

Predictions from "loess" fits are now named from the row names of

• Parsing errors detected during Sweave() processing will now be
reported referencing their original location in the source file.

• New adjustcolor() utility, e.g., for simple translucent color

• qr() now has a trivial lm method with a simple (fast) validity

• An experimental new programming model has been added to package
methods for reference (OOP-style) classes and methods. See

• bzip2 has been updated to version 1.0.6 (bug-fix release).
--with-system-bzlib now requires at least version 1.0.6.

• R now provides jss.cls and jss.bst (the class and bib style file
for the Journal of Statistical Software) as well as RJournal.bib
and Rnews.bib, and R CMD ensures that the .bst and .bib files are
found by BibTeX.

• Functions using the TAR environment variable no longer quote the
value when making system calls. This allows values such as tar
--force-local, but does require additional quotes in, e.g., TAR =
"'/path with spaces/mytar'".


• Supplying the parser with a character string containing both
octal/hex and Unicode escapes is now an error.

• File extension .C for C++ code files in packages is now defunct.

• R CMD check no longer supports configuration files containing
Perl configuration variables: use the environment variables
documented in ‘R Internals’ instead.

• The save argument of require() now defaults to FALSE and save =
TRUE is now deprecated. (This facility is very rarely actually
used, and was superseded by the Depends field of the DESCRIPTION
file long ago.)

• R CMD check --no-latex is deprecated in favour of --no-manual.

• R CMD Sd2Rd is formally deprecated and will be removed in R


• install.packages() has a new argument libs_only to optionally
pass --libs-only to R CMD INSTALL and works analogously for
Windows binary installs (to add support for 64- or 32-bit

• When sub-architectures are in use, the installed architectures
are recorded in the Archs field of the DESCRIPTION file. There
is a new default filter, "subarch", in available.packages() to
make use of this.

Code is compiled in a copy of the src directory when a package is
installed for more than one sub-architecture: this avoid problems
with cleaning the sources between building sub-architectures.

• R CMD INSTALL --libs-only no longer overrides the setting of
locking, so a previous version of the package will be restored
unless --no-lock is specified.


• R CMD Rprof|build|check are now based on R rather than Perl
scripts. The only remaining Perl scripts are the deprecated R
CMD Sd2Rd and install-info.pl (used only if install-info is not
found) as well as some maintainer-mode-only scripts.

NB: because these have been completely rewritten, users should
not expect undocumented details of previous implementations to
have been duplicated.

R CMD no longer manipulates the environment variables PERL5LIB

• R CMD check has a new argument --extra-arch to confine tests to
those needed to check an additional sub-architecture.

Its check for “Subdirectory 'inst' contains no files” is more
thorough: it looks for files, and warns if there are only empty

Environment variables such as R_LIBS and those used for
customization can be set for the duration of checking via a
file ~/.R/check.Renviron (in the format used by .Renviron, and
with sub-architecture specific versions such as
~/.R/check.Renviron.i386 taking precedence).

There are new options --multiarch to check the package under all
of the installed sub-architectures and --no-multiarch to confine
checking to the sub-architecture under which check is invoked.
If neither option is supplied, a test is done of installed
sub-architectures and all those which can be run on the current
OS are used.

Unless multiple sub-architectures are selected, the install done
by check for testing purposes is only of the current
sub-architecture (_via_ R CMD INSTALL --no-multiarch).

It will skip the check for non-ascii characters in code or data
if the environment variables R_CHECK_ASCII_CODE or
R_CHECK_ASCII_DATA are respectively set to FALSE. (Suggestion
of Vince Carey.)

• R CMD build no longer creates an INDEX file (R CMD INSTALL does
so), and --force removes (rather than overwrites) an existing
INDEX file.

It supports a file ~/.R/build.Renviron analogously to check.

It now runs build-time \Sexpr expressions in help files.

• R CMD Rd2dvi makes use of tools::texi2dvi() to process the
package manual. It is now implemented entirely in R (rather than
partially as a shell script).

• R CMD Rprof now uses utils::summaryRprof() rather than Perl. It
has new arguments to select one of the tables and to limit the
number of entries printed.

• R CMD Sweave now runs R with --vanilla so the environment setting
of R_LIBS will always be used.


• lang5() and lang6() (in addition to pre-existing lang[1-4]())
convenience functions for easier construction of eval() calls.
If you have your own definition, do wrap it inside #ifndef lang5
.... #endif to keep it working with old and new R.

• Header R.h now includes only the C headers it itself needs, hence
no longer includes errno.h. (This helps avoid problems when it
is included from C++ source files.)

• Headers Rinternals.h and R_ext/Print.h include the C++ versions
of stdio.h and stdarg.h respectively if included from a C++
source file.


• A C99 compiler is now required, and more C99 language features
will be used in the R sources.

• Tcl/Tk >= 8.4 is now required (increased from 8.3).

• System functions access, chdir and getcwd are now essential to
configure R. (In practice they have been required for some

• make check compares the output of the examples from several of
the base packages to reference output rather than the previous
output (if any). Expect some differences due to differences in
floating-point computations between platforms.

• File NEWS is no longer in the sources, but generated as part of
the installation. The primary source for changes is now

• The popen system call is now required to build R. This ensures
the availability of system(intern = TRUE), pipe() connections and
printing from postscript().

• The pkg-config file libR.pc now also works when R is installed
using a sub-architecture.

• R has always required a BLAS that conforms to IE60559 arithmetic,
but after discovery of more real-world problems caused by a BLAS
that did not, this is tested more thoroughly in this version.


• Calls to selectMethod() by default no longer cache inherited
methods. This could previously corrupt methods used by as().

• The densities of non-central chi-squared are now more accurate in
some cases in the extreme tails, e.g. dchisq(2000, 2, 1000), as a
series expansion was truncated too early. (PR#14105)

• pt() is more accurate in the left tail for ncp large, e.g.
pt(-1000, 3, 200). (PR#14069)

• The default C function (R_binary) for binary ops now sets the S4
bit in the result if either argument is an S4 object. (PR#13209)

• source(echo=TRUE) failed to echo comments that followed the last
statement in a file.

• S4 classes that contained one of "matrix", "array" or "ts" and
also another class now accept superclass objects in new(). Also
fixes failure to call validObject() for these classes.

• Conditional inheritance defined by argument test in
methods::setIs() will no longer be used in S4 method selection
(caching these methods could give incorrect results). See

• The signature of an implicit generic is now used by setGeneric()
when that does not use a definition nor explicitly set a

• A bug in callNextMethod() for some examples with "..." in the
arguments has been fixed. See file
src/library/methods/tests/nextWithDots.R in the sources.

• match(x, table) (and hence in) now treat "POSIXlt" consistently
with, e.g., "POSIXct".

• Built-in code dealing with environments (get(), assign(),
parent.env(), is.environment() and others) now behave
consistently to recognize S4 subclasses; is.name() also
recognizes subclasses.

• The abs.tol control parameter to nlminb() now defaults to 0.0 to
avoid false declarations of convergence in objective functions
that may go negative.

• The standard Unix-alike termination dialog to ask whether to save
the workspace takes a EOF response as n to avoid problems with a
damaged terminal connection. (PR#14332)

• Added warn.unused argument to hist.default() to allow suppression
of spurious warnings about graphical parameters used with
plot=FALSE. (PR#14341)

• predict.lm(), summary.lm(), and indeed lm() itself had issues
with residual DF in zero-weighted cases (the latter two only in
connection with empty models). (Thanks to Bill Dunlap for
spotting the predict() case.)

• aperm() treated resize = NA as resize = TRUE.

• constrOptim() now has an improved convergence criterion, notably
for cases where the minimum was (very close to) zero; further,
other tweaks inspired from code proposals by Ravi Varadhan.

• Rendering of S3 and S4 methods in man pages has been corrected
and made consistent across output formats.

• Simple markup is now allowed in \title sections in .Rd files.

• The behaviour of as.logical() on factors (to use the levels) was
lost in R 2.6.0 and has been restored.

• prompt() did not backquote some default arguments in the \usage
section. (Reported by Claudia Beleites.)

• writeBin() disallows attempts to write 2GB or more in a single
call. (PR#14362)

• new() and getClass() will now work if Class is a subclass of
"classRepresentation" and should also be faster in typical calls.

• The summary() method for data frames makes a better job of names
containing characters invalid in the current locale.

• [[ sub-assignment for factors could create an invalid factor
(reported by Bill Dunlap).

• Negate(f) would not evaluate argument f until first use of
returned function (reported by Olaf Mersmann).

• quietly=FALSE is now also an optional argument of library(), and
consequently, quietly is now propagated also for loading
dependent packages, e.g., in require(*, quietly=TRUE).

• If the loop variable in a for loop was deleted, it would be
recreated as a global variable. (Reported by Radford Neal; the
fix includes his optimizations as well.)

• Task callbacks could report the wrong expression when the task
involved parsing new code. (PR#14368)

• getNamespaceVersion() failed; this was an accidental change in
2.11.0. (PR#14374)

• identical() returned FALSE for external pointer objects even when
the pointer addresses were the same.

• [email protected][] <- val did not duplicate in a case it should have.

• tempfile() now always gives a random file name (even if the
directory is specified) when called directly after startup and
before the R RNG had been used. (PR#14381)

• quantile(type=6) behaved inconsistently. (PR#14383)

• backSpline(.) behaved incorrectly when the knot sequence was
decreasing. (PR#14386)

• The reference BLAS included in R was assuming that 0*x and x*0
were always zero (whereas they could be NA or NaN in IEC 60559
arithmetic). This was seen in results from tcrossprod, and for
example that log(0) * 0 gave 0.

• The calculation of whether text was completely outside the device
region (in which case, you draw nothing) was wrong for screen
devices (which have [0, 0] at top-left). The symptom was (long)
text disappearing when resizing a screen window (to make it
smaller). (PR#14391)

• model.frame(drop.unused.levels = TRUE) did not take into account
NA values of factors when deciding to drop levels. (PR#14393)

• library.dynam.unload required an absolute path for libpath.

Both library() and loadNamespace() now record absolute paths for
use by searchpaths() and getNamespaceInfo(ns, "path").

• The self-starting model NLSstClosestX failed if some deviation
was exactly zero. (PR#14384)

• X11 (and other devices such as png using
cairographics) and which use Pango font selection now work around
a bug in Pango when very small fonts (those with sizes between 0
and 1 in Pango's internal units) are requested. (PR#14369)

• Added workaround for the font problem with X11
and similar on Mac OS X whereby italic and bold styles were
interchanged. (PR#13463 amongst many other reports.)

• source(chdir = TRUE) failed to reset the working directory if it
could not be determined - that is now an error.

• Fix for crash of example(rasterImage) on x11(type="Xlib").

• Force Quartz to bring the on-screen display up-to-date
immediately before the snapshot is taken by grid.cap() in the
Cocoa implementation. (PR#14260)

• model.frame had an unstated 500 byte limit on variable names.
(Example reported by Terry Therneau.)

• The 256-byte limit on names is now documented.

• Subassignment by [, [[ or $ on an expression object with value
NULL coerced the object to a list.

Version 2.10.1 | Release Date: 2010-01-12 | Download
No changes specified
Version 2.12.0 | Release Date: 2007-01-01 | Download
No changes specified