• R CMD check now warns (rather than notes) on undeclared use of other packages in
examples and tests: increasingly people are using the metadata in the ‘DESCRIPTION’
le to compute information about packages, for example reverse dependencies.
• The defaults for some of the options in R CMD check (described in the ‘R Inter-
nals’ manual) have changed: checks for unsafe and .Internal() calls and for partial
matching of arguments in R function calls are now done by default.
• R CMD check has more comprehensive facilities for checking compiled code and so
gives fewer reports on entry points linked into ‘.so’/‘.dll’ les from libraries (in-
cluding C++ and Fortran runtimes).
Checking compiled code is now done on FreeBSD (as well as the existing supported
platforms of Linux, Mac OS X, Solaris and Windows).
• R CMD build has more options for ‘--compact-vignettes’: see R CMD build --
• R CMD build has a new option ‘--md5’ to add an ‘MD5’ le (as done by CRAN): this
is used by R CMD INSTALL to check the integrity of the distribution.
If this option is not specied, any existing (and probably stale) ‘MD5’ le is removed.
DEPRECATED AND DEFUNCT:
• R CMD Rd2dvi is now defunct: use R CMD Rd2pdf.
• Options such ‘--max-nsize’, ‘--max-vsize’ and the function mem.limits() are now
defunct. (Options ‘--min-nsize’ and ‘--min-vsize’ remain available.)
• Use of library.dynam() without specifying all the rst three arguments is now dis-
Use of an argument chname in library.dynam() including the extension ‘.so’ or
‘.dll’ (which was never allowed according to the help page) is defunct. This also
appliesto library.dynam.unload() and to useDynLib directivesin ‘NAMESPACE’ les.
• The internal functions .readRDS() and .saveRDS() are now defunct.
• The o-line help() types ‘"postscript"’ and ‘"ps"’ are defunct.
• Sys.putenv(), replaced and deprecated in R 2.5.0, is nally removed.
• Some functions/objects which have been defunct for ve or more years have
been removed completely. These include .Alias(), La.chol(), La.chol2inv(),
La.eigen(), Machine(), Platform(), Version, codes(), delay(), format.char(),
getenv(), httpclient(), loadURL(), machine(), parse.dcf(), printNoClass(),
provide(), read.table.url(), restart(), scan.url(), symbol.C(), sym-
bol.For() and unix().
• The ENCODING argument to .C() is deprecated. It was intended to smooth the tran-
sition to multi-byte character strings, but can be replaced by the use of iconv() in
the rare cases where it is still needed.
• Building with a positive value of ‘--with-valgrind-instrumentation’ now also in-
struments logical, complex and raw vectors.
• Passing R objects other than atomic vectors, functions, lists and environments to
.C() is now deprecated and will give a warning. Most cases (especially NULL) are
actually coding errors. NULL will be disallowed in future.
.C() now passesa pairlist as a SEXP to the compiled code. This is aswas documented,
but pairlists were in reality handled dierently as a legacy from the early days of R.
• call_R and call_S are deprecated. They still exist in the headersand as entry points,
but are no longer documented and should not be used for new code.
• str(x, width) now obeys its width argument also for function headers and other
objects x where deparse() is applied.
• The convention for x %/% 0L for integer-mode x has been changed from 0L to
• The exportMethods directive in a ‘NAMESPACE’ le now exports S4 generics as neces-
sary, as the extensions manual said it does. The manual has also been updated to be
alittle more informative on this point.
It is now required that there is an S4 generic (imported or created in the package)
when methods are to be exported.
• Reference methods cannot safely use non-exported entries in the namespace. We now
do not do so, and warn in the documentation.
• The namespace import code was warning when identical S4 generic functions were
imported more than once, but should not (reported by Brian Ripley, then Martin
• merge() is no longer allowed (in some ways) to create a data frame with duplicate
column names (which confusedPR#14786).
• Fixes for rendering raster images on X11 and Windows devices when the x-axis or
y-axis scale is reversed.
• getAnywhere() found S3 methods as seen from the utils namespace and not from the
environment from which it was called.
• selectMethod(f, sig) would not return inherited group methods when caching was
o (as it is by default).
• dev.copy2pdf(out.type = "cairo") gave an error. (PR#14827)
• Virtual classes (e.g., class unions) had a NULL prototype even if that was not a legal
subclass. See ?setClassUnion.
• The C prototypes for zdotc and zdotu in ‘R_ext/BLAS.h’ have been changed to the
more modern style rather than that used by f2c. (Patch by Berwin Turlach.)
• isGeneric() produced an error for primitives that can not have methods.
• .C() or .Fortran() had a lack-of-protection error if the registration information
resulted in an argument being coerced to another type.
• boxplot(x=x, at=at) with non nite elements in x and non integer at could not
generate a warning but failed.
• heatmap(x, symm=TRUE, RowSideColors=*) no longer draws the colors in reversed
• predict(<ar>) was incorrect in the multivariate case, for p >= 2.
• print(x, max=m) is now consistent when x is a "Date"; also the \reached ...
max.print .." messages are now consistently using single brackets.
• Closed the ‘<li>’ tag in pages generated by
• Axis tick marks could go out of range when a log scale was used. (PR#14833)
• Signature objects in methods were not allocated asS4 objects(caused a problem with
trace() reported by Martin Morgan).
CHANGES IN R VERSION 2.14.2
• The internal untar() (as used by default by R CMD INSTALL) now knows about some
pax headers which bsdtar (e.g., the default tar for Mac OS >= 10.6) can incorrectly
include in tar les, and will skip them with a warning.
• PCRE has been upgraded to version 8.21: as well as bug xes and greater Perl
compatibility, this adds a JIT pattern compiler, about which PCRE’s newssays ‘large
performance benets can be had in many situations’. This is supported on most but
not all R platforms.
• Function compactPDF() in package tools now takes the default for argument
gs_quality from environment variable GS_QUALITY: there is a new value "none",
the ultimate default, which prevents GhostScript being used in preference to qpdf
just because environment variable R_GSCMD is set. If R_GSCMD is unset or set to "",
the function will try to nd a suitable GhostScript executable.
• The included version of zlib has been updated to 1.2.6.
• For consistency with the logLik() method, nobs() for "nls" les now excludes
observations with zero weight. (Reported by Berwin Turlach.)
• R CMD check now reports by default on licenses not according to the description in
‘Writing R Extensions’.
• R CMD check has a new option ‘--as-cran’ to turn on most of the customizations
that CRAN uses for its incoming checks.
• R CMD INSTALL will now no longer install certain le types from ‘inst/doc’: these
are almost certainly mistakes and for some packages are wasting a lot of space. These
are ‘Makefile’, les generated by running LaTeX, and unless the package uses a
‘vignettes’ directory, PostScript and image bitmap les.
Note that only PDF vignettes have ever been supported: some of these les come
from DVI/PS output from the Sweave defaults prior to R 2.13.0.
• R congured with ‘--disable-openmp’ would mistakenly set HAVE_OPENMP (internal)
and SUPPORT_OPENMP (in‘Rconfig.h’) even though no OpenMP
• The getS3method() implementation had an old computation to nd an S4 default
• readLines() could over
ow a buer if the last line of the le was not terminated.
• R CMD check could miss undocumented S4 objects in packages which used S4 classes
but did not ‘Depends: methods’ in their ‘DESCRIPTION’ le.
• The HTML Help Search page had malformed links. (PR#14769)
• A couple of instances of lack of protection of SEXPs have been squashed. (PR#14772,
• image(x, useRaster=TRUE) misbehaved on single-column x. (PR#14774)
• Negative valuesfor options("max.print") or the max argument toprint.default()
caused crashes. Now the former are ignored and the latter trigger an error.
• The text of a function body containing more than 4096 bytes was not properly saved
by the parser when entered at the console.
• Forgetting the #endif tag in an Rd le could cause the parser to go into a loop.
(Reported by Hans-Jorg Bibiko.)
• str(*, ....., strict.width="cut") now also obeys list.len = n. (Reported by
• Printing of arrays did not have enough protection (C level), e.g., in the context of
capture.output(). (Reported by Herve Pages and Martin Morgan.)
• pdf(file = NULL) would produce a spurious le named ‘NA’. (PR#14808)
• list2env() did not check the type of its envir argument. (PR#14807)
• svg() could segfault if called with a non-existent le path. (PR#14790)
• make install can install to a path containing ‘+’ characters. (PR#14798)
• The edit() function did not respect the options("keep.source") setting. (Re-
ported by Cleridy Lennert.)
• predict.lm(*, type="terms", terms=*, se.fit=TRUE)
• There is a partial workaround for errors in the TRE regular-expressions engine with
named classes and repeat counts of at least 2 in a MBCS locale (PR#14408): these
are avoided when TRE is in 8-bit mode (e.g., for useBytes = TRUE and when all the
data are ASCII).
• The C function R_ReplDLLdo1() did not call top-level handlers.
• The Quartz device was unable to detect window sessions on Mac OS X 10.7 (Lion)
and higher and thus it was not used as the default device on the console. Since Lion
any application can use window sessions, so Quartz will now be the default device if
the user’s window session is active and R is not run via ssh which is at least close to
the behavior in prior OS X versions.
• mclapply() would fail in code assembling the translated error message if some (but
not all) cores encountered an error.
• format.POSIXlt(x) raised an arithmetic exception when x was an invalid object of
class "POSIXlt" and parts were empty.
• installed.packages() has some more protection against package installs going on
• .Primitive() could be mis-used to call .Internal() entry points.
CHANGES IN R VERSION 2.14.1
• parallel::detectCores() is now able to nd the number of physical cores (rather
than CPUs) on Sparc Solaris.
It can also do so on most versions of Windows; however the default remains detect-
Cores(logical = TRUE) on that platform.
• Reference classes now keep a record of which elds are locked. $lock() with no
arguments returns the names of the locked elds.
• HoltWinters() reports a warning rather than an error for some optimization failures
(where the answer might be a reasonable one).
• tools::dependsOnPkg() now accepts the shorthand dependencies = "all".
• parallel::clusterExport() now allows specication of an environment from which
• The quartz() device now does tilde expansion on its file argument.
• tempfile() on a Unix-alike now takes the process ID into account. This is needed
withmulticore(and as part of parallel) because the parent and all the children share a
session temporary directory, and they canshare the C random number stream used to
produce the unique part. Further, two children can call tempfile() simultaneously.
• Option print in Sweave’s RweaveLatex() driver now emulates auto-printing rather
than printing (which can dier for an S4 object by calling show() rather than
• filled.contour() now accepts innite values: previously it might have generated
invalid graphics les (e.g., containing NaN values).
• On 64-bit Linux systems, configure now only sets ‘LIBnn’ to lib64 if ‘/usr/lib64’
exists. This may obviate setting ‘LIBnn’ explicitly on Debian-derived systems.
It is still necessary to set ‘LIBnn = lib’ (or ‘lib32’) for 32-bit builds of R on a 64-bit
OS on those Linux distributions capable for supporting that concept.
• configure looks for ‘inconsolata.sty’, and if not found adjusts the default
R_RD4PDF to not use it (with a warning, since it is needed for high-quality rendering
• R CMD INSTALL will now do a test load for all sub-architectures for which code was
compiled (rather than just the primary sub-architecture).
• When checking examples under more than one sub-architecture, R CMD check now
uses a separate directory ‘examples_arch’ for each sub-architecture, and leaves the
output in le ‘pkgname-Ex_arch.Rout’. Some packages expect their examples to be
run in a clean directory ....
• stack() now gives an error if no vector column is selected, rather than returning a
1-column data frame (contrary to its documentation).
• summary.mlm() did not handle objects where the formula had been specied by an
expression. (Reported by Helios de Rosario Martinez).
• tools::deparseLatex(dropBraces=TRUE) could drop text as well as braces.
• colormodel = "grey" (new in R 2.14.0)) did not always work in postscript() and
• file.append() could return TRUE for failures. (PR#14727)
• gzcon() connections are no longer subject to garbage collection: it was possible for
this to happen when unintended (e.g., when calling load()).
• nobs() does not count zero-weight observations for glm() ts, for consistency with
lm(). This aects the BIC() values reported for such glm() ts. (Spotted by Bill
• options(warn = 0) failed to end a (C-level) context with more than 50 accumulated
warnings. (Spotted by Jerey Horner.)
• The internal plot.default() code did not do sanity checks on a cex argument, so
invalid input could cause problems. (Reported by Ben Bolker.)
• anyDuplicated(<array>, MARGIN=0) no longer fails. (Reported by Herve Pages.)
• read.dcf() removes trailing blanks: unfortunately on some platforms this included
\xa0 (non-breaking space) which is the trailing byte of a UTF-8 character. It now
only considers ASCII space and tab to be ‘blank’.
• There was a sign error in part of the calculations for the variance returned by
• pbinom(10, 1e6, 0.01, log.p = TRUE) was NaN thanks to the buggy x to
• RweaveLatex() now emulates auto-printing rather than printing, by calling meth-
ods::show() when auto-printing would.
• duplicated() ignored fromLast for a one-column data frame. (PR#14742)
• source() and related functions did not put the correct timestamp on the source
references; srcfilecopy() has gained a new argument timestamp to support this
• srcfilecopy() has gained a new argument isFile and now records the working
directory, to allow debuggers to nd the original source le. (PR#14826)
• LaTeX conversion of Rd les did not correctly handle preformatted backslashes.
• HTML conversion of Rd les did not handle markup within tabular cells properly.
• source() on an empty le with keep.source = TRUE tried to read from stdin(), in
R2.14.0 only. (PR#14753)
• The code to check Rd les in packages would abort if duplicate description sections
CHANGES IN R VERSION 2.14.0
SIGNIFICANT USER-VISIBLE CHANGES:
• All packages must have a namespace, and one is created on installationif not supplied
inthe sources. This meansthat any package without a namespace must be re-installed
under this version of R (but previously-installed data-only packages without R code
can still be used).
• The yLineBias of the X11() and windows() families of devices has been changed
from 0.1 to 0.2: this changes slightly the vertical positioning of text in the margins
(including axis annotations). This is mainly for consistency with other devices such
as quartz() and pdf(). (Wish ofPR#14538.)
There is a new graphics parameter "ylbias" which allows the y-line bias of the
graphics device to be tweaked, including to reproduce output from earlier versions of
• Labeling of the p-values in various anova tables has been rationalized to be either
"Pr(>F)" or "Pr(>Chi)" (i.e., the "Pr(F)", "Pr(Chi)" and "P(>|Chi|)" variants
have been eliminated). Code which extracts the p value via indexing by name may
• :: can now be used for datasets made available for lazy-loading in packages with
namespaces (which makes it consistent with its use for data-only packages without
namespaces in earlier versions of R).
• There is a new package parallel.
It incorporates (slightly revised) copies of packages multicore andsnow (excluding
MPI, PVM and NWS clusters). Code written to use the higher-level API functions in
those packages should work unchanged (apart from changing any references to their
namespaces to a reference to parallel, and links explicitly to o multicoreor r snow on
It also contains support for multiple RNG streams following L’Ecuyer et al (2002),
with support for both mclapply andsnow clusters. This replaces functions like clus-
terSetupRNG() fromsnow (which are not in parallel).
Documents you may be interested
Documents you may be interested