• decompose() now returns the original series as part of its value, so it can be used
(rather than reconstructed) when plotting. (Suggestion of Rob Hyndman.)
• Rao’s ecient score test has been implemented for glm objects. Specically, the add1,
drop1, and anova methods now allow test = "Rao".
• If a saved workspace (e.g., ‘.RData’) contains objects that cannot be loaded, R will
now start with an warning message and an empty workspace, rather than failing to
• strptime() now accepts times such as ‘24:00’ for midnight at the end of the day, for
although these are disallowed by POSIX 1003.1-2008, ISO 8601:2004 allows them.
• Assignment of names() to S4 objects now checks for a corresponding "names" slot,
and generates a warning or an error if that slot is not dened. See the section on slots
• The default methods for is.finite(), is.infinite() and is.nan() now signal an
error if their argument is not an atomic vector.
• The formula method for plot() no longer places package stats on the search path (it
loads the namespace instead).
• There now is a genuine "function" method for plot() rather than the generic dis-
patching internally to graphics::plot.function(). It is now exported, so can be
called directly as plot.function().
• The one-sided ks.test() allows exact = TRUE to be specied in the presence of ties
(but the approximate calculation remains the default: the ‘exact’ computation makes
assumptions known to be invalid in the presence of ties).
• The behaviour of curve(add = FALSE) has changed: it now no longer takes the de-
fault x limits from the previous plot (if any): rather they default to c(0, 1) just asthe
"function" method for plot(). To get the previousbehaviour use curve(add = NA),
which also takes the default for log-scaling of the x-axis from the previous plot.
• Both curve() and the plot() method for functions have a new argument xname to
facilitate plots such as sin(t) vs t.
• The local argument to source() can specify an environment as well as TRUE
(parent.env()) and FALSE (.GlobalEnv). It gives better error messages for other
values, such as NA.
• vcov() gains methods for classes "summary.lm" and "summary.glm".
• The plot() method for class "profile.nls" gains ylab and lty arguments, and
passes ... on to plot.default.
• Character-string arguments such as the mode argument of vector(), as.vector()
and is.vector() and the description argument of file() are required to be of
length exactly one, rather than any further elements being silently discarded. This
helps catch incorrect usage in programming.
• The length argument of vector() and its wrappers such as numeric() is required to
be of length exactly one (other values are now an error rather than giving a warning
• vector(len) and length(x) <- len no longer accept TRUE/FALSE for len (not that
they were ever documented to, but there was special-casing in the C code).
• There is a new function Sys.setFileTime() to set the time of a le (including a
directory). See its help for exactly which times it sets on various OSes.
• The le times reported by file.info() are reported to sub-second resolution on
systemswhich support it. (Currently the POSIX 2008 andFreeBSD/Darwin/NetBSD
methods are detected.)
• New function getCall(m) as an abstraction for m$call, enabling update()’s default
method to apply more universally. (NB: this can be masked by existing functions in
• Sys.info() gains a euser component to report the ‘eective’ user on OSes which
have that concept.
• The result returned by try() now contains the original error condition object as the
• All packages with R code are lazy-loaded irrespective of the ‘LazyLoad’ eld in the
‘DESCRIPTION’ le. A warning is given if the ‘LazyLoad’ eld is overridden.
• Rd markup has a new ‘\figure’ tag so that gures can be included in help pages
when converted to HTML or LaTeX. There are examples on the help pages for par()
• The built-in httpd server now allows access to les in the session temporary directory
tempdir(), addressed as the ‘/session’ directory on the httpd server.
• Development versions of R are no longer referred to by the number under which they
might be released, e.g., in the startup banner, R --version and sessionUtils().
The correct way to refer to a development version of R is ‘R-devel’, preferably with
the date and SVN version number.
E.g., ‘R-devel (2011-07-04 r56266)’
• There isa newfunction texi2pdf() inpackage tools, currently a convenience wrapper
for texi2dvi(pdf = TRUE).
• There are two new options for typesetting PDF manuals from Rd les. These
are ‘beramono’ and ‘inconsolata’, and used the named font for monospaced
They are intended to be used in combination with ‘times’, and
‘times,inconsolata,hyper’ is now the default for the reference manual and package
manuals. If you do not have that font installed, you can set R_RD4PF to one of the
other options: see the ‘R Installation and Administration Manual’.
• Automatic printing for reference classes is now done by the $show() method. A
method is dened for class ‘envRefClass’ and may be overridden for user classes (see
the ?ReferenceClasses example). S4 show() methods should no longer be needed
for reference classes.
• tools::Rdiff (by default) and R CMD Rdiff now ignore dierences in pointer values
when comparing printed environments, compiled byte code, etc.
• The "source" attribute on functions created with keep.source=TRUE has been re-
placed with a "srcref" attribute. The "srcref" attribute references an in-memory
copy of the source le using the "srcfilecopy" class or the new "srcfilealias"
NB: This means that functions sourced with keep.source = TRUE and saved (e.g.,
by save() or readRDS()) in earlier versions of R will no longer show the original
sources (including comments).
• New items ‘User Manuals’ andTechnicalPapershave been added to the HTML help
main page. These link to vignettes in the base and recommended packages and to a
collection of papers about R issues, respectively.
• Documentation and messageshave been standardized to use\namespace"rather than
• setGeneric() now looks in the default packages for anon-generic versionof a function
if called from a package with a namespace. (It always did for packages without a
• Setting the environment variable _R_WARN_ON_LOCKED_BINDINGS_ will give a warning
if an attempt is made to change a locked binding.
• \SweaveInput is now supported when generating concordances in Sweave().
• findLineNum() and setBreakpoint() now allow the environment to be specied
indirectly; the latter gains a clear argument to allow it to call untrace().
• The body of a closure can be one of further types of R objects, including environments
and external pointers.
• The Rd2HTML() function in package tools now has a stylesheet argument, allowing
pages to be displayed in alternate formats.
• New function requireNamespace() analogous to require(), returning a logical value
after attempting to load a namespace.
• There is a new type of RNG, "L'Ecuyer-CMRG", implementing L’Ecuyer (1999)’s
‘combined multiple-recursive generator’ ‘MRG32k3a’. See the comments on ?RNG.
• help.search() and ?? can now display vignettes and demos as well as help pages.
The new option "help.search.types" controls the types of documentation and the
order of their display.
This also applies to HTML searches, which now give results in all of help pages,
vignettes and demos.
• socketConnection() now has a timeout argument. It is now documented that large
values (packagesnow used a year) do not work on some OSes.
• The initialization of the random-number generator now uses the process ID as well as
the current time, just in case two R processes are launched very rapidly on a machine
with low-resolution wall clock (some have a resolution of a second; modern systems
have microsecond-level resolution).
• New function pskill() in the tools package to send a terminate signal to one or
more processes, plus constants such as SIGTERM to provide a portable way to refer to
signals (since the numeric values are OS-dependent).
• New function psnice() in the tools package to return or change the ‘niceness’ of a
process. (Refers to the ‘priority class’ on Windows.)
• list.dirs() gains a recursive argument.
• An ‘Authors@R’ eld in a package ‘DESCRIPTION’ le can now be used to generate
‘Author’ and ‘Maintainer’ elds if needed, and to auto-generate package citations.
• New utility getElement() for accessing either a list component or a slot in an S4
• stars() gains a col.lines argument, thanks to Dustin Sallings. (Wish of
• New function regmatches() for extracting or replacing matched or non-matched
substrings from match data obtained by regexpr(), gregexpr() and regexec().
• help(package = "pkg_name", help_type = "HTML") now gives HTML help on the
package rather than text help. (This gives direct access to the HTML version of the
package manual shown via help.start()’s ‘Packages’ menu.)
• agrep() gains a fixed argument to optionally allow approximate regular expression
matching, and a costs argument to specify possibly dierent integer match costs for
insertions, deletions and substitutions.
• read.dcf() and write.dcf() gain a keep.white argument to indicate elds where
whitespace should be kept as is.
• available.packages() now works around servers that fail to return an error code
when ‘PACKAGES.gz’ does not exist. (Patch submitted by Seth Schommer.)
• readBin() can now read more than 2
1 bytes in a single call (the previously
• New function regexec() for nding the positions of matches as well as all substrings
corresponding to parenthesized subexpressions of the given regular expression.
• New function adist() in package utils for computing ‘edit’ (generalized Levenshtein)
distances between strings.
• Class "raster" gains an is.na method to avoid confusion from the misuse of the
matrix method (such asPR#14618).
• The identical() function gains an ignore.bytecode argument to control compari-
son of compiled functions.
• pmin and pmax now warn if an argument is partially recycled (wish ofPR#14638).
• The default for image(useRaster=) is now taken from option "preferRaster": for
the small print see ?image.
• str() now displays reference class objects and their elds, rather than treating them
as classical S4 classes.
• New function aregexec() in package utils for nding the positions of approximate
string matchesas well as all substrings corresponding to parenthesized subexpressions
of the given regular expression.
• download.file() has an extra argument to pass additional command-line options
to the non-default methods using command-line utilities.
cacheOK = FALSE is now supported for method = "curl".
• interaction.plot(*, type = .) now also allows type "o" or "c".
• axTicks(*, log=TRUE) did sometimes give more values than the ticks in the cor-
responding graphics::axis(). By default, it now makes use of the new (graphics-
package independent) axisTicks() which canmake use of a new utility .axisPars().
Further, it now returns a decreasing sequence (as for log=FALSE) whenusr isdecreas-
• Using fix() or edit() on a R object (except perhaps a matrix or data frame) writes
its temporary le with extension ‘.R’ so editors which select their mode based on the
extension will select a suitable mode.
• The pdf() device makesuse of Flate compression: this is controlledby the new logical
argument compress, and is enabled by default.
• Devices svg(), cairo_pdf() and cairo_ps() gain a family argument.
On a Unix-alike X11() gains a family argument. This is one of the x11.options()
and so can be passed as an argument to the bmp(), jpeg(), png() andtiff() devices.
Analogous changes have been made on Windows, so all built-in R graphics devices
now have a family argument except pictex() (which has no means to change fonts).
• The bmp(), jpeg(), png() and tiff() devices now make use of the antialias ar-
gument for type = "quartz".
• There are several new built-in font mappings for X11(type = "Xlib"): see the help
• There is a new type X11(type = "dbcairo") which updates the screen less fre-
quently: see its help page.
• The X11() device now makes use of cursors to distinguish its states. The normal
cursor is an arrow (rather than a crosshair); the crosshair is used when the locator
is in use, and a watch cursor is shown when plotting computations are being done.
(These are the standard names for X11 cursors: how they are actually displayed
depends on the window manager.)
• New functions dev.hold() and dev.flush() for use with graphics devices with
buering. These are used for most of the high-level graphics functions such as box-
plot(), so that the plot is only displayed when the page is complete.
Currently implemented for windows(buffered = TRUE), quartz() and the
cairographics-based X11() types with buering (which are the default on-screen de-
How to C#: Special Effects
Erase. Set the image to current background color, the background color can be set by:ImageProcess.BackgroundColor = Color.Red. Encipher. how to delete text in pdf converter professional; how to delete text in pdf converter
• New function dev.capture() for capture of bitmap snapshots of image-based devices
(a superset of the functionality provided by grid.cap() in grid).
• The default colormodel for pdf() and postscript() is now called "srgb" to more
accurately describe it. (Instead of "rgb", and in the case of postscript() it no
longer switches to and from the gray colorspace, by default.)
The colormodel for postscript() which does use both gray and sRGB colorspaces
is now called "srgb+gray".
Plots which are known to use only black/white/transparent can advantageously use
colormodel = "gray" (just as before, but there is now slightly more advantage in
• postscript() with values colormodel = "rgb" and colormodel = "rgb-nogray"
give the behaviour prior to R 2.13.0 of uncalibrated RGB, which under some circum-
stances can be rendered much faster by a viewer.
pdf(colormodel = "rgb") gives the behaviour prior to R 2.13.0 of uncalibrated
RGB, which under some circumstances can be rendered faster by a viewer, and the
les will be smaller (by about 9KB if compression is not used).
• The postscript() device only includes the denition of the sRGB colorspace in the
output le for the colormodels which use it.
• The postscript() and pdf() devices now output greyscale raster images (and not
RGB) when colormodel = "gray".
• postscript(colormodel = "gray") now accepts non-grey colours and uses their
luminance (as pdf() long has).
• colormodel = "grey" is allowed as an alternative name for postscript() and
• pdf() in the default sRGB colorspace outputs many fewer changes of colorspace,
which may speed up rendering in some viewing applications.
• There is a new function dev.capabilities() to query the capabilities of the cur-
rent device. The initial set of capabilities are support for semi-transparent colours,
rendering and capturing raster images, the locator and for interactive events.
• For pdf(), maxRasters is increased as needed so the argument is no longer used.
SWEAVE & VIGNETTES:
• Options keep.source = TRUE, figs.only = FALSE are now the default.
• The way the type of user-dened options is determined has changed. Previously they
were all regarded as logical: now the type is determined by the value given at rst
• The allowed values of logical options are now precisely those allowed for character
inputs to as.logical(): this means that ‘t’ and ‘f’ are no longer allowed (although
Tand F still are).
• The preferred location for vignette sources is now the directory ‘vignettes’ and not
‘inst/doc’: R CMD build will now re-build vignettes in directory ‘vignettes’ and
copy the ‘.Rnw’ (etc) les and the corresponding PDFs to ‘inst/doc’. Further les to
be copied to ‘inst/doc’ can be specied via the le ‘vignettes/.install_extras’.
• R CMD Sweave now supports a ‘--driver’ option to select the Sweave driver: the
default is equivalent to ‘--driver=RweaveLatex’.
• R CMD Sweave and R CMD Stangle support options ‘--encoding’ and ‘--options’.
• The Rtangle() driver allows output = "stdout" or output = "stderr" to select
the output or message connection. This is convenient for scripting using something
R CMD Stangle --options='output="stdout"' foo.Rnw > foo2.R
• There is a new option pdf.compress controlling whether PDF gures are generated
using Flate compression (they are by default).
• R CMD Sweave now has a ‘--pdf’ option to produce a PDF version of the processed
• It is no longer allowed to have two vignettes with the same vignette basename (e.g.,
‘vig.Rnw’ and ‘vig.Snw’). (Previously one vignette hid the other in the vignette()
• Function R_tmpnam2 has been added to the API to allow a temporary lename to
include a specied extension.
• Package ‘DESCRIPTION’ le eld ‘KeepSource’ forces the package to be installed with
keep.source = TRUE (or FALSE).(Suggestion of Greg Snow. Note that asallpackages
are lazy-loaded, this is now only relevant at installation.)
‘--without-keep.source’ for R CMD INSTALL.
• R CMD INSTALL has a new option ‘--byte-compile’ to byte-compile the packages
during installation (since all packages are now lazy-loaded). This can be controlled
on a per-package basis by the optional eld ‘ByteCompile’ in the ‘DESCRIPTION’ le.
• A package R code but without a ‘NAMESPACE’ le will have a default one created at
R CMD build or R CMD INSTALL time, so all packages will be installed with names-
paces. A consequence of this is that .First.lib() functions need to be copied
to .onLoad() (usually) or .onAttach(). For the time being, if there is an auto-
generated ‘NAMESPACE’ le and no .onLoad() nor .onAttach() function is found but
.First.lib() is, it will be run as the attach hook (unless the package is one of a list
of known exceptions, when it will be run as the load hook).
• A warning is given if test-loading a package changes a locked binding in a package
other than itself. It is likely that this will be disallowed in future releases. (There are
pro tem some exceptions to the warning.)
• A dependency on SVN revision is allowed for R, e.g. R (>= r56550). This should be
used in conjunction with a version number, e.g. R (>= 2.14.0), R (>= r56550) to
distinguish between R-patched and R-devel versions with the same SVN revision.
• installed.packages() now hashes the names of its cache les to avoid very rare
problems with excessively long path names. (PR#14669)
• A top-level ‘COPYING’ le in a package is no longer installed (le names ‘LICENSE’ or
‘LICENCE’ having long been preferred).
• R CMD check now gives an error if the R code in a vignette fails to run, unless this is
caused by a missing package.
• R CMD check now unpacks tarballs in the same way as R CMD INSTALL, including
making use of the environment variable R_INSTALL_TAR to override the default be-
• R CMD check performs additional code analysis of package startup functions, and
noties about incorrect argument lists and (incorrect) calls to functions which modify
the search path or inappropriately generate messages.
• R CMD check now also checks compiled code for symbols corresponding to functions
which might terminate R or write to ‘stdout’/‘stderr’ instead of the console.
• R CMD check now uses a pdf() device when checking examples (rather than
• R CMD check now checks line-endings of makeles and C/C++/Fortran sources in
subdirectories of ‘src’ as well as in ‘src’ itself.
• R CMD check now reports as a NOTE what look like methods documented with their
full names even if there is a namespace and they are exported. In almost all cases
they are intended to be used only as methods and should use the ‘\method’ markup.
In the other rare casesthe recommended form is to use a functionsuchas coefHclust
which would not get confused with a method, document that and register it in the
‘NAMESPACE’ le by s3method(coef, hclust,
• The default for the environment variable _R_CHECK_COMPACT_DATA2_ is now true:
thusif using the newer formsof compression introduced in R 2.10.0 would be benecial
is now checked (by default).
• Reference output for a vignette can be supplied when checking a package by
R CMD check: see ‘Writing R Extensions’.
• R CMD Rd2dvi allows the use of LaTeX package ‘inputenx’ rather than ‘inputenc’:
the value of the environment variable RD2DVI_INPUTENC is used. (LaTeX package
‘inputenx’ is an optional install which provides greater coverage of the UTF-8 en-
• Rscript on a Unix-alike now accepts le names containing spaces(provided these are
escaped or quoted in the shell).
• R CMD build on a Unix-alike (only) now tries to preserve dates on les it copies from
its input directory. (This was the undocumented behaviour prior to R 2.13.0.)
DEPRECATED AND DEFUNCT:
• require() no longer has a save argument.
• The gamma argument to hsv(), rainbow(), and rgb2hsv() has been removed.
• The ‘--no-docs’ optionfor R CMD build --binary isdefunct: use ‘--install-args’
• The option ‘--unsafe’ to R CMD INSTALL is defunct: use the identical option
• The entry point pythag formerly in ‘Rmath.h’ is defunct: use instead the C99 function
• R CMD build --binary is formally defunct: R CMD INSTALL --build has long been
the preferred alternative.
• zip.file.extract() is now defunct: use unzip() or unz() instead.
• R CMD Rd2dvi without the ‘--pdf’ option is now deprecated: only PDF output will
be supported in future releases (since this allows the use of fonts only supported for
PDF), and only R CMD Rd2pdf will be available.
• Options such as ‘--max-nsize’ and the function mem.limits() are now deprecated:
these limits are nowadays almost never used, and are reported by gc() when they are
• Forms like binomial(link = "link") for GLM families deprecated since R 2.4.0 are
• The declarativeOnly argument to loadNamespace() (not relevant since R 2.13.0)
has been removed.
• Use of library.dynam() without specifying all the rst three arguments is depre-
cated. (It is often called from a namespace, and the defaults are only appropriate to
Use of chname in library.dynam() with the extension ‘.so’ or .dll (which is
clearly not allowed according to the help page) is deprecated. This also applies to
library.dynam.unload() and useDynLib directives in ‘NAMESPACE’ les.
• It is deprecated to use mean(x) and sd(x) directly on data frames (or also matrices,
for sd) x, instead of simply using sapply.
In the same spirit, median(x) now gives an error for a data frame x (it often gave
• The keep.source argument to library() and require() is deprecated: it was only
usedfor packages installed without lazy-loading, andnow all packages are lazy-loaded.
• Using a false value for the ‘DESCRIPTION’ eld ‘LazyLoad’ is deprecated.
• The base and recommended packages are now byte-compiled (equivalent to
make bytecode in R 2.13.x).
• Congure option ‘--with-system-zlib’ now only makes use of the basic interface of
zlib and not the C function ‘gzseek’ which has shown erroneous behaviour in zlib
1.2.4 and 1.2.5.
• The zlib in the R sources is now version 1.2.5. (This is safe even on 32-bit Linux
systems because only the basic interface is now used.)
• The ‘.afm’ les in package grDevices are now installed as compressed les (as long
done on Windows), saving ca 2MB on the installed size.
• The non-screen cairo-based devices are no longer in the X11 module and so can be
installed without X11. (We have never seen a Unix-alike system with cairographics
installed but not X11, but a user might select ‘--without-x’.)
• Congure will try to use ‘-fobjc-exceptions’ for the Objective-C compiler (if
present) to ensure that even compilers that do not enable exceptions by default (such
as vanilla gcc) can be used. (Objective-C is currently only used on Mac OS X.)
• The system call times is required.
• The C99 functions acosh, asinh, atanh, snprintf and vsnprintf are now required.
• There isnolonger support for making DVI manuals via make dvi, make install-dvi
and similar. Only PDF manuals are supported (to allow the use of fonts which are
only available for PDF.)
• The ‘configure’ argumentsusedduring conguration of R are included as a comment
in ‘Makeconf’ for informative purposes on Unix-alikes in a form suitable for shell
execution. Note that those are merely command-line arguments, they do not include
environment variables (one more reason to use congure variables instead) or site
• Framework installation now supports DESTDIR (Mac OS X only).
• Java detection (R CMD javareconf) works around bogus java.library.path prop-
erty in recent Oracle Java binaries.
• The locale category ‘LC_MONETARY’ was only being set on startup on Windows: that
is now done on Unix-alikes where supported.
• Reference class utilities will detect an attempt to modify methods or elds in a locked
class denition (e.g., in a namespace) and generate an error.
• The formula methods for lines(), points() and text() now work even if package
stats is not on the search path.
• In principle, S4 classes from dierent packages could have the same name. This
has not previously worked. Changes have now been installed that should allow
such classes and permit methods to use them. New functions className() and
multipleClasses() are related tools for programming.
• Work around an issue in Linux (a system select call resetting tv) which prevented
internet operations from timing out properly.
• Several stack trampling and over
ow issues have been xed in TRE, triggered by
agrep and friends with long patterns. (PR#14627)
• (\design infelicity") Field assignments in reference classes are now consistent with
slots in S4 classes: the assigned value must come from the declared class (if any) for
the eld or from a subclass.
• The methods objects constructed for "coerce" and "coerce<-" were lacking some
essential information in the generic, defined and target slots; as() did not handle
duplicate class denitions correctly.
• The parser no longer accepts the digit 8 in an octal character code in a string, nor
does it accept unterminated strings in a le. (Reported by Bill Dunlap.)
• The print() methodfor class"summary.aov" did not passonargument digits when
summary() wascalledona single object, andhence usedmore digitsthan documented.
• The X11() device’s cairo back-end produced incorrect capture snapshot images on
• loglin() gave a spurious error when argument margin consisted of a single element
of length one. (PR#14690)
• loess() is better protected against misuse, e.g. zero-length span. (PR#14691)
• HoltWinters() checks that the optimization succeeded. (PR#14694)
• The (undocumented) inclusion of superclass objects in default initializing of reference
classes overwrote explicit eld arguments. The bug is xed, the feature documented
and a test added.
• round(x, -Inf) now does something sensible (return zero rather than NA).
• signif(x, -Inf) now behaves as documented (signif(x, 1)) rather than giving
• The "table" method for Axis() hardcoded side = 1, hence calls to
plot(<vector>, <table>) labelled the wrong axis. (PR#14699)
• Creating a connection might fail under gctorture(TRUE).
• stack() and unstack() converted character columns to factors.
unstack() sometimes produced incorrect results (a list or a vector) if the factor on
which to un-split had only one level.
• Onsome systems help(".C", help_type = "pdf") and similar generated le names
that TeX was unable to handle.
• Non-blocking listening socket connections continued to report isIncomplete() as
true even when the peer had closed down and all available input had been read.
• The revised HTML search system now generates better hyperlinks to help topics
found: previously it gave problems with help pages with names containing e.g. spaces
• A late change in R 2.13.2 broke ‘\Sexpr’ expressions in Rd les.
• The creation of ticks on log axes (including by axTicks()) sometimes incorrectly
omitted a tick at one end of the range by rounding error in a platform-dependent
way. This could be seen in the examples for axTicks(), where with axis limits
c(0.2, 88) the tick for 0.2 was sometimes omitted.
• qgamma() for small shape under
ows to 0 rather than sometimes giving NaN.
Documents you may be interested
Documents you may be interested