| NEWS | R Documentation |
News for R 3.0.0 and later can be found in file ‘NEWS.Rd’ in the R sources and files ‘NEWS’ and ‘doc/html/NEWS.html’ in an R build.
CHANGES IN R VERSION 2.15.3lgamma(x) for very small x (in the
denormalized range) is no longer Inf with a warning.
image() now sorts an unsorted breaks vector,
with a warning.
The internal methods for tar() and untar() do
a slightly more general job for ‘ustar’-style handling of
paths of more than 100 bytes.
Packages compiler and parallel have been added to the reference index (‘refman.pdf’).
untar(tar = "internal") has some support for
pax headers as produced by e.g. gnutar --posix
(which seems prevalent on OpenSUSE 12.2) or
bsdtar --format pax, including long path and link names.
sQuote() and dQuote() now handle 0-length
inputs. (Suggestion of Ben Bolker.)
summaryRprof() returns zero-row data frames rather
than throw an error if no events are recorded, for consistency.
The included version of PCRE has been updated to 8.32.
The tcltk namespace can now be re-loaded after unloading.
The Tcl/Tk event loop is inhibited in a forked child from package
parallel (as in e.g. mclapply()).
parallel::makeCluster() recognizes the value
random for the environment variable R_PARALLEL_PORT:
this chooses a random value for the port and reduces the chance of
conflicts when multiple users start a cluster at the same time.
The default for TAR on Windows for R CMD
build has been changed to be internal if no
tar command is on the path.
This enables most packages to be built ‘out of the box’
without Rtools: the main exceptions are those which need
to be installed to re-build vignettes and need Rtools
for installation (usually because they contain compiled code).
On a 64-bit Windows platform with enough RAM, R_alloc
can now allocate up to just under 32GB like other 64-bit
platforms.
Use of col2rgb(0) is deprecated (see the help page
for its limitations).
The deprecated intensities component returned by
hist() is no longer recognized by the plot() method
and will be removed in R 3.0.0.
real(), as.real() and is.real() are now
formally deprecated and give a warning.
This is formal notice that the non-API EISPACK entry points in R will be removed shortly.
The configure tests for Objective C and Objective
C++ now work on Mac OS 10.8 with Xcode 4.5.2 (PR#15107).
The cairo-based versions of X11() now work with
current versions of cairographics (e.g. 1.12.10). (PR#15168)
A workaround for earlier versions of R is to use
X11.options(type = "nbcairo").
Configuration and R CMD javareconf now come up
with a smaller set of library paths for Java on Oracle-format JDK
(including OpenJDK). This helps avoid conflicts between libraries
(such as libjpeg) supplied in the JDK and system
libraries. This can always be overridden if needed: see the
‘R Installation and Administration’ manual.
beta(a, b) could overflow to infinity in its
calculations when one of a and b was less than one.
(PR#15075)
lbeta(a, b) no longer gives NaN if a or
b is very small (in the denormalized range).
bquote() is now able to substitute default arguments in
single-argument functions. (PR#15077)
browseEnv(html = FALSE) would segfault if called from
R (not R.app) on a CRAN-style Mac OS X build of R.
[[<- for lists (generic vectors) needed to increment
NAMED count when RHS is used more than once. (PR#15098)
On Windows, warnings about opening a file or pipe with a non-ASCII description were sometimes output in UTF-8 rather than in the current locale's character set.
The call() function did not duplicate its arguments.
(PR#15115)
TukeyHSD() could give NA results with some
na.action methods such as na.exclude().
(Hinted at on R-help by John Fox.)
The deprecated svd(X, LINPACK = TRUE) could alter
X in R 2.15.[12]. (Reported by Bill Dunlap.)
Under Windows, file.link() and file.symlink()
used the link name twice, so would always fail. (Reported
by Rui Barradas/Oliver Soong).
summaryRprof(memory = "both") mixed up the units of
Vcells and Ncells: it now works in bytes. (PR#15138)
tools::Rd2HTML() would sometimes delete text. (PR#15134)
plot() failed for "table" objects containing
just one entry. (PR#15118)
embedFonts() needed to quote some filepaths.
(PR#15149)
parallel::mccollect() handled NULL returns
incorrectly (removing the element rather than setting it to
NULL).
The full reference index (‘fullrefman.pdf’) was missing packages compiler and parallel.
The report for
optim(method = "L-BFGS-B", control = list(trace = 1))
reported the last completed and not the current iteration, unlike
other methods and trace levels. (PR#15103)
qt(1e-12, 1.2) no longer gives NaN.
dt(1e160, 1.2, log=TRUE) no longer gives -Inf.
On Windows the untar() function now quotes the
directory name when using an external tar utility, so
R CMD check will handle pathnames containing spaces.
The version for Windows 8 and Windows Server 2012 is now
displayed by win.version(). (Reported by Gabor
Grothendieck.)
The custom Windows installer target myR in the
installer ‘Makefile’ did not work in 2.15.2. (Reported
by Erich Neuwirth.)
aperm(matrix(1:6, 2, dimnames=list(A={}, B={})), "A")
no longer segfaults.
Expressions involving user defined operators were not always deparsed faithfully. (PR#15179)
The enc2utf8() function converted NA_character_
to "NA" in non-UTF-8 locales. (PR#15201)
The exclude argument to xtabs() was ignored
for "factor" arguments.
On Windows, work around an event-timing problem when the RGui console was closed from the ‘X’ control and the closure cancelled. (This would on some 64-bit systems crash R, typically those with a slow GPU relative to the CPU.)
On unix Rscript will pass the r_arch setting
it was compiled with on to the R process so that the architecture
of Rscript and that of R will match unless overridden.
On Windows, basename(), dirname() and
file.choose() have more support for long non-ASCII file
names with 260 or more bytes when expressed in UTF-8.
CHANGES IN R VERSION 2.15.2 The X11() window gains an icon: the
latter may be especially useful on Ubuntu's ‘Unity’
interface.
The WM_CLASS should be set in circumstances where the
Window Manager failed to make use of X11 resource settings.
(Contributed by Philip Johnson.)
The "Date" and "POSIXt" methods for
cut() will accept an unsorted breaks argument (as
the default method does, although this was undocumented).
(Wish of PR#14961.)
Reference class methods (in the methods package) that
use other methods in an indirect way (e.g., by sapply())
must tell the code analysis to include that method. They can now
do so by invoking $usingMethods().
More Polish translations are available: for the
RGui menus and for several recommended packages.
Multistratum MANOVA works. In fact, it seems to have done so for years in spite of the help page claiming it did not.
qqline() has new optional arguments
distribution, probs and qtype, following the
example of lattice's panel.qqmathline().
The handling of single quotes in the en@quot
pseudo-language has been slightly improved. Double quotes are no
longer converted.
New functions checkPoFiles() and checkPoFile()
have been added to the tools package to check for
consistency of format strings in translation files.
model.matrix(~1, ...) now also contains the same
rownames that less trivial formulae produce. (Wish of PR#14992,
changes the output of several packages.)
Misuse of rep() on undocumented types of objects
(e.g. calls) is now reported as an error.
The included LAPACK has been updated to 3.4.1, with some patches from the current SVN sources. (Inter alia, this resolves PR#14692.)
file.copy(recursive = TRUE) has some additional
checks on user error leading to attempted infinite recursion (and on
some platforms to crashing R).
PCRE has been updated to version 8.31, a bug-fix release.
The included version of liblzma has been updated to
version 5.0.4, a minor bug-fix release.
New function .bincode(), a ‘bare-bones’
version of cut.default(labels = FALSE) for use in packages
with image() methods.
The HTML manuals now use directional single quotes.
maintainer() now converts embedded new lines to
spaces. It no longer gives a non-obvious error for non-installed
packages.
The X11() device has some protection against
being used with forked processes via package parallel.
Setting the environment variable R_OSX_VALGRIND (to
any value) allows R to be run under valgrind on Mac OS
10.6 and 10.7 (valgrind currently has very limited
support for 10.8), provided system() is not used (directly
or indirectly). This should not be needed for valgrind
>= 3.8.1.
The model.frame() method for "lm" uses
xlevels: this is safer if data was supplied or
model = FALSE was used and the levels of factors used in
the fit had been re-ordered since fitting.
Similarly, model.frame(fm, data=<data>) copies across
the variables used for safe prediction from the fit.
Functions such as parLapply() in package
parallel can make use of a default cluster if one is set.
(Reported by Martin Morgan.)
chol(pivot = TRUE, LINPACK = FALSE) is now available
using LAPACK 3.2 subroutine DPSTRF.
The functions .C(), .Call(),
.External() and .Fortran() now check that they are
called with an unnamed first argument: the formal arguments were
changed from name= to .NAME= in R 2.13.0, but some
packages were still using the old name. This is currently a
warning, but will be an error in future.
step() no longer tries to improve a model with
AIC of -Inf (a perfect fit).
spline() and splinefun() gain a new method
"hyman", an implementation of Hyman's method of
constructing monotonic interpolation splines. (Based on
contributions of Simon Wood and Rob Hyndman.)
On Windows, the C stack size has been increased to 64MB (it has been 10MB since the days of 32MB RAM systems).
array() is now implemented in C code (for speed) when
data is atomic or an unclassed list (so it is known that
as.vector(data) will have no class to be used by rep()).
rep() is faster and uses less memory,
substantially so in some common cases (e.g. if times is of
length one or length.out is given, and each = 1).
findInterval(), tabulate(), cut(),
hist() and image.default() all use .Call()
and are more efficient.
duplicated(), unique() and similar now
support vectors of lengths above 2^29 on 64-bit
platforms.
Omitting PACKAGE in .C() etc calls was
supposed to make use of the DLL from the namespace within which
the enclosing function was defined. It was less successful in
doing so than it might be, and gave no indication it had failed.
A new search strategy is very successful and gives a warning
when it fails. In most cases this is because the entry point is
not actually provided by that package (and so PACKAGE
should be used to indicate which package is intended) but in some
the namespace does not have a DLL specified by a
useDynLib() directive so PACKAGE is required.
R CMD check now checks if a package can be loaded
by library(pkgname, lib.loc = "somewhere") without being on
the library search path (unless it is already installed in
.Library, when it always will be).
R CMD check --as-cran notes ‘hidden’ files
and directories (with names starting with a dot) that are not
needed for the operation of R CMD INSTALL or R CMD
build: such files should be excluded from the published tarball.
R CMD check (if checking subdirectories) checks
that the R code in any demos is ASCII and can be parsed, and
warns if not.
When R CMD Rd2pdf is used with ‘inputenx.sty’,
it allows further characters (mainly for Eastern European
languages) by including ‘ix-utf8enc.dfu’ (if available).
(Wish of PR#14989.)
R CMD build now omits several types of hidden
files/directories, including ‘inst/doc/.Rinstignore’,
‘vignettes/.Rinstignore’, (‘.Rinstignore’ should be at
top level), ‘.deps’ under ‘src’, ‘.Renviron’,
‘.Rprofile’, ‘.Rproj.user’, ‘.backups’,
‘.cvsignore’, ‘.cproject’, ‘.directory’,
‘.dropbox’, ‘.exrc’, ‘.gdb.history’,
‘.gitattributes’, ‘.gitignore’, ‘.gitmodules’,
‘.hgignore’, ‘.hgtags’, ‘.htaccess’,
‘.latex2html-init’, ‘.project’, ‘.seed’,
‘.settings’, ‘.tm_properties’ and various leftovers.
R CMD check now checks for .C(),
.Call(), .External() and .Fortran() calls in
other packages, and gives a warning on those found from R itself
(which are not part of the API and change without notice: many
will be changed for R 3.0.0).
The limit for R_alloc on 64-bit platforms has been
raised to just under 32GB (from just under 16GB).
The misuse of .C("name", ..., PACKAGE = foo) where
foo is an arbitrary R object is now an error.
The misuse .C("name",..., PACKAGE = "") is now warned about
in R CMD check, and will be an error in future.
Use of array() with a 0-length dim argument is
deprecated with a warning (and was contrary to the documentation).
Use of tapply() with a 0-length INDEX list is
deprecated with a warning.
Translation packages are deprecated.
Calling rep() or rep.int() on a pairlist is
deprecated and will give a warning. In any case, rep()
converted a pairlist to a list so you may as well do that
explicitly.
Entry point rcont2 is no longer part of the API, and
will move to package stats in R 3.0.0.
The ‘internal’ graphics device invoked by
.Call("R_GD_nullDevice", package = "grDevices") is about to
be removed: use pdf(file = NULL) instead.
eigen(EISPACK = TRUE),
chol(pivot = FALSE, LINPACK = TRUE),
chol2inv(LINPACK = TRUE), solve(LINPACK = TRUE) and
svd(LINPACK = TRUE) are deprecated and give a warning.
They were provided for compatibility with R 1.7.0 (Mar 2003)!
The ‘internal function’ kappa.tri() has been
renamed to .kappa_tri() so it is not inadvertently called
as a method for class "tri".
Functions sessionData() and browseAll() in
package methods are on a help page describing them as
‘deprecated’ and are now formally deprecated.
For a Windows or Mac OS X binary package install,
install.packages() will check if a source package is
available on the same repositories, and report if it is a later
version or there is a source package but no binary package
available.
This check can be suppressed: see the help page.
install.packages(type = "both") has been enhanced.
In interactive use it will ask whether to choose the source
version of a package if the binary version is older and contains
compiled code, and also asks if source packages with no binary
version should be installed).
There is a new configure option
--with-libtiff (mainly in case the system installation
needs to be avoided).
LAPACK 3.4.1 does use some Fortran 90 features, so
g77 no longer suffices.
If an external LAPACK is used, it must be version 3.2 or later.
On Windows, starting Rterm via R.exe
caused Ctrl-C to misbehave. (PR#14948)
The tools::latexToUtf8() function missed conversions that
were contained within braces.
Long timezone specifications (such as a file name preceded
by :) could crash as.POSIXlt. (PR#14945)
R CMD build --resave-data could fail if there was no
‘data’ directory but there was an ‘R/sysdata.rda’ file.
(PR#14947)
is.na() misbehaved on a 0-column data frame.
(PR#14959)
anova.lmlist() failed if test was
supplied. (PR#14960)
It was unable to compute Cp tests for object of class "lm"
(it assumed class "glm").
The formula method for sunflowerplot() now
allows xlab and ylab to be set. (Reported by Gerrit
Eichner.)
The "POSIXt" and "Date" methods for hist()
could fail on Windows where adjustments to the right-hand boundary
crossed a DST transition time.
On Windows, the code in as.POSIXct() to handle
incorrectly specified isdst fields might have resulted in
NA being returned.
aov() and manova() gave spurious warning about
singular error model in the multiresponse case.
In ns() and bs(), specifying knots = NULL
is now equivalent to omitting it, also when df is
specified. (PR#14970)
sprintf() did not accept numbered arguments ending
in zero. (PR#14975)
rWishart() could overflow the C stack and maybe crash
the R process for dimensions of several hundreds or more.
(Reported by Michael Braun on R-sig-mac.)
Base package vignettes (e.g. vignette("Sweave")) were
not fully installed in builds of R from the tarball.
lchoose() and choose() could overflow the C
stack and crash R.
When given a 0-byte file and asked to keep source
references, parse() read input from stdin()
instead.
pdf(compress = TRUE) did not delete temporary files
it created until the end of the R session. (PR#14991)
logLik() did not detect the error of applying it
to a multiple-response linear model. (PR#15000)
file.copy(recursive = TRUE) did not always report
FALSE for a failure two or more directories deep.
qgeom() could return -1 for extremely small
q. (PR#14967)
smooth.spline() used DUP = FALSE which allowed
its compiled C code to change the function: this was masked by the
default byte-compilation. (PR#14965)
In Windows, the GUI preferences for foreground color were not always respected. (Reported by Benjamin Wells.)
On OS X, the Quartz versions of the bitmap devices did not
respect antialias = "none". (PR#15006)
unique() and similar would infinite-loop if called on
a vector of length > 2^29 (but reported that the
vector was too long for 2^30 or more).
parallel::stopCluster() now works with MPI
clusters without snow being on the search path.
terms.formula() could exhaust the stack, and the
stack check did not always catch this before the segfault.
(PR#15013)
sort.list(method = "radix") could give incorrect
results on certain compilers (seen with clang on Mac OS
10.7 and Xcode 4.4.1).
backsolve(T, b) gave incorrect results when
nrows(b) > ncols(T) and b had more than one column.
It could segfault or give nonsense if k was specified as
more than ncols(T).
smooth.spline() did not check that a specified
numeric spar was of length 1, and gave corrupt results if
it was of length 0.
Protection added to do_system. (PR#15025)
Printing of vectors with names > 1000 characters now works correctly rather than truncating. (PR#15028)
qr() for a complex matrix did not pivot the column names.
--with-blas='-framework vecLib' now also works on OS X 10.8.
R CMD check no longer fails with an error if
a ‘DESCRIPTION’ file incorrectly contains a blank line.
(Reported by Bill Dunlap.)
install.packages(type = "both") could call
chooseCRANmirror() twice.
lm.wfit() could segfault in R 2.15.1 if all the
weights were zero. (PR#15044)
A malformed package name could cause R CMD INSTALL
to write outside the target library.
Some of the quality control functions
(e.g. tools::checkFF()) were wrongly identifying the source
of S4 methods in a package and so not checking them.
The default type of display by browseEnv() when using
R.app on Mac OS X has been incorrect for a long time.
The implementation of importMethodsFrom in a
NAMESPACE file could be confused and fail to find generics
when importing from multiple packages (reported and fixed by
Michael Lawrence).
The detection of the C stack direction is better protected against compiler optimization. (PR#15011)
Long custom line types would sometimes segfault on the cairographics-based devices. (PR#15055)
tools::checkPoFile() unprotected too early in its C
code and so segfaulted from time to time.
The Fortran code underlying nlminb() could
infinite-loop if any of the input functions returned NA or
NaN. This is now an error for the gradient or Hessian, and
a warning for the function (with the value replaced by
Inf). (In part, PR#15052.)
The code for creating coerce() methods could
generate false notes about ambiguous selection; the notes have
been suppressed for this function.
arima.sim() could give too long an output in some
corner cases (in part, PR#15068).
anova.glm() with test = "Rao" didn't work when
models included an offset. (Reported by Søren Feodor Nielsen.)
as.data.frame.matrix() could return invalid data
frame with no row.names attribute for 0-row matrix. (Reported
by Hervé Pagès.)
Compilation with the vecLib or Accelerate
frameworks on OS X without using that also for LAPACK is more
likely to be successful.
CHANGES IN R VERSION 2.15.1source() now uses withVisible() rather than
.Internal(eval.with.vis). This sometimes alters tracebacks
slightly.
install.packages("pkg_version.tgz") on Mac OS X now
has sanity checks that this is actually a binary package (as
people have tried it with incorrectly named source packages).
splineDesign() and spline.des() in package
splines have a new option sparse which can be used
for efficient construction of a sparse B-spline design matrix
(via Matrix).
norm() now allows type = "2" (the
‘spectral’ or 2-norm) as well, mainly for didactical
completeness.
pmin() and pmax()) now also work when one of
the inputs is of length zero and others are not, returning a
zero-length vector, analogously to, say, +.
colorRamp() (and hence colorRampPalette()) now
also works for the boundary case of just one color when the ramp is
flat.
.C() gains some protection against the misuse of
character vector arguments. (An all too common error is to pass
character(N), which initializes the elements to "",
and then attempt to edit the strings in-place, sometimes forgetting
to terminate them.)
Calls to the new function globalVariables() in
package utils declare that functions and other objects in a
package should be treated as globally defined, so that CMD
check will not note them.
print(packageDescription(*)) trims the Collate
field by default.
The included copy of zlib has been updated to version
1.2.7.
A new option "show.error.locations" has been added.
When set to TRUE, error messages will contain the
location of the most recent call containing source reference
information. (Other values are supported as well; see
?options.)
The NA warning messages from e.g. pchisq() now report
the call to the closure and not that of the .Internal.
Added Polish translations by Łukasz Daniel.
In package parallel, makeForkCluster() and the
multicore-based functions use native byte-order for serialization
(deferred from 2.15.0).
lm.fit(), lm.wfit(), glm.fit() and
lsfit() do less copying of objects, mainly by using
.Call() rather than .Fortran().
.C() and .Fortran() do less copying: arguments
which are raw, logical, integer, real or complex vectors and are
unnamed are not copied before the call, and (named or not) are not
copied after the call. Lists are no longer copied (they are
supposed to be used read-only in the C code).
tabulate() makes use of .C(DUP = FALSE) and
hence does not copy bin. (Suggested by Tim Hesterberg.)
It also avoids making a copy of a factor argument bin.
Other functions (often or always) doing less copying include
cut(), dist(), the complex case of eigen(),
hclust(), image(), kmeans(), loess(),
stl() and svd(LINPACK = TRUE).
There is less copying when using primitive replacement
functions such as names(), attr() and
attributes().
The converters for use with .C() (see
?getCConverterDescriptions) are deprecated: use the
.Call() interface instead. There are no known examples
(they were never fully documented).
For R CMD check, a few people have reported
problems with junctions on Windows (although they were tested on
Windows 7, XP and Server 2008 machines and it is unknown under
what circumstances the problems occur). Setting the environment
variable R_WIN_NO_JUNCTIONS to a non-empty value (e.g. in
‘~/.R/check.Renviron’) will force copies to be used instead.
R CMD INSTALL with _R_CHECK_INSTALL_DEPENDS_
set to a true value (as done by R CMD check --as-cran)
now restricts the packages available when lazy-loading as well
as when test-loading (since packages such as ETLUtils
and agsemisc had top-level calls to library()
for undeclared packages).
This check is now also available on Windows.
C entry points mkChar and mkCharCE now check
that the length of the string they are passed does not exceed
2^31-1 bytes: they used to overflow with
unpredictable consequences.
C entry points R_GetCurrentSrcref and
R_GetSrcFilename have been added to the API to allow
debuggers access to the source references on the stack.
Windows-specific changes will now be announced in this file (‘NEWS’). Changes up and including R 2.15.0 remain in the ‘CHANGES’ file.
There are two new environment variables which control the defaults for command-line options.
If R_WIN_INTERNET2 is set to a non-empty value, it is as if --internet2 was used.
If R_MAX_MEM_SIZE is set, it gives the default memory limit if --max-mem-size is not specified: invalid values being ignored.
lsfit() lost the names from the residuals.
More cases in which merge() could create a data frame
with duplicate column names now give warnings. Cases where
names specified in by match multiple columns are errors.
Nonsense uses such as seq(1:50, by = 5) (from package
plotrix) and seq.int(1:50, by = 5) are now errors.
The residuals in the 5-number summary printed by
summary() on an "lm" object are now explicitly
labelled as weighted residuals when non-constant weights are
present. (Wish of PR#14840.)
tracemem() reported that all objects were copied
by .C() or .Fortran() whereas only some object types
were ever copied.
It also reported and marked as copies some transformations
such as rexp(n, x): it no longer does so.
The plot() method for class "stepfun" only
used the optional xval argument to compute xlim and
not the points at which to plot (as documented). (PR#14864)
Names containing characters which need to be escaped were not deparsed properly. (PR#14846)
Trying to update (recommended) packages in
‘R_HOME/library’ without write access is now dealt with more
gracefully. Further, such package updates may be skipped (with a
warning), when a newer installed version is already going to be
used from .libPaths(). (PR#14866)
hclust() is now fast again (as up to end of 2003),
with a different fix for the "median"/"centroid" problem. (PR#4195).
get_all_vars() failed when the data came entirely
from vectors in the global environment. (PR#14847)
R CMD check with _R_CHECK_NO_RECOMMENDED_
set to a true value (as done by the --as-cran option)
could issue false errors if there was an indirect dependency
on a recommended package.
formatC() uses the C entry point str_signif
which could write beyond the length allocated for the output string.
Missing default argument added to implicit S4 generic for
backsolve(). (PR#14883)
Some bugs have been fixed in handling load actions that
could fail to export assigned items or generate spurious warnings
in CMD check on loading.
For tiff(type = "windows"), the numbering of per-page
files except the last was off by one.
On Windows, loading package stats (which is done for
a default session) would switch line endings on ‘stdout’
and ‘stderr’ from CRLF to LF. This affected
Rterm and R CMD BATCH.
On Windows, the compatibility function x11() had
not kept up with changes to windows(), and issued
warnings about bad parameters. (PR#14880)
On Windows, the Sys.glob() function did not handle
UNC paths as it was designed to try to do. (PR#14884)
In package parallel, clusterApply() and similar
failed to handle a (pretty pointless) length-1 argument. (PR#14898)
Quartz Cocoa display reacted asynchronously to
dev.flush() which means that the redraw could be performed
after the plot has been already modified by subsequent code. The
redraw is now done synchronously in dev.flush() to allow
animations without sleep cycles.
Source locations reported in traceback() were
incorrect when byte-compiled code was on the stack.
plogis(x, lower = FALSE, log.p = TRUE) no longer
underflows early for large x (e.g. 800).
?Arithmetic's “1 ^ y and y ^ 0
are 1, always” now also applies for integer
vectors y.
X11-based pixmap devices like png(type = "Xlib") were
trying to set the cursor style, which triggered some warnings and
hangs.
Code executed by the built-in HTTP server no longer allows other HTTP clients to re-enter R until the current worker evaluation finishes, to prevent cascades.
The plot() and Axis() methods for class
"table" now respect graphical parameters such as
cex.axis. (Reported by Martin Becker.)
Under some circumstances package.skeleton() would
give out progress reports that could not be translated and so were
displayed by question marks. Now they are always in English.
(This was seen for CJK locales on Windows, but may have occurred
elsewhere.)
The evaluator now keeps track of source references outside
of functions, e.g. when source() executes a script.
The replacement method for window() now works
correctly for multiple time series of class "mts".
(PR#14925)
is.unsorted() gave incorrect results on non-atomic
objects such as data frames. (Reported by Matthew Dowle.)
The value returned by tools::psnice() for invalid
pid values was not always NA as documented.
Closing an X11() window while locator() was
active could abort the R process.
getMethod(f, sig) produced an incorrect error message
in some cases when f was not a string).
Using a string as a “call” in an error condition
with options(showErrorCalls=TRUE) could cause a segfault.
(PR#14931)
The string "infinity" allowed by C99 was not accepted
as a numerical string value by e.g. scan() and
as.numeric(). (PR#14933)
In legend(), setting some entries of lwd to
NA was inconsistent (depending on the graphics device) in
whether it would suppress those lines; now it consistently does
so. (PR#14926)
by() failed for a zero-row data frame. (Reported by
Weiqiang Qian.)
The Yates' correction in chisq.test() could be bigger
than the terms it corrected, previously leading to an infinite
test statistic in some corner cases which are now reported as
NaN.
xgettext() and related functions sometimes returned
items that were not strings for translation. (PR#14935)
plot(<lm>, which=5) now correctly labels the factor
level combinations for the special case where all
h[i,i] are the same. (PR#14837)
Sys.glob() caused a segfault if the first element of
path was NA_character. (PR#14990)
CHANGES IN R VERSION 2.15.0 The behaviour of unlink(recursive = TRUE) for a
symbolic link to a directory has changed: it now removes the link
rather than the directory contents (just as rm -r does).
On Windows it no longer follows reparse points (including junctions and symbolic links).
Environment variable RD2DVI_INPUTENC has been renamed to RD2PDF_INPUTENC.
.Deprecated() becomes a bit more flexible, getting an
old argument.
Even data-only packages without R code need a namespace and so may need to be installed under R 2.14.0 or later.
assignInNamespace() has further restrictions on use
apart from at top-level, as its help page has warned.
Expect it to be disabled from programmatic use in the future.
system() and system2() when capturing output
report a non-zero status in the new "status" attribute.
kronecker() now has an S4 generic in package
methods on which packages can set methods. It will be
invoked by X %x% Y if either X or Y is an S4
object.
pdf() accepts forms like file = "|lpr" in the
same way as postscript().
pdf() accepts file = NULL.
This means that the device does NOT create a PDF file
(but it can still be queried, e.g., for font metric info).
format() (and hence print()) on
"bibentry" objects now uses options("width") to
set the output width.
legend() gains a text.font argument. (Suggested
by Tim Paine, PR#14719.)
nchar() and nzchar() no longer accept factors
(as integer vectors). (Wish of PR#6899.)
summary() behaves slightly differently (or more
precisely, its print() method does). For numeric inputs, the
number of NAs is printed as an integer and not a real. For dates
and datetimes, the number of NAs is included in the printed output
(the latter being the wish of PR#14720).
The "data.frame" method is more consistent with the default
method: in particular it now applies zapsmall() to
numeric/complex summaries.
The number of items retained with options(warn = 0)
can be set by options(nwarnings=).
There is a new function assignInMyNamespace() which
uses the namespace of the function it is called from.
attach() allows the default name for an attached file
to be overridden.
bxp(), the work horse of boxplot(), now uses a
more sensible default xlim in the case where at is
specified differently from 1:n, see the discussion on R-devel,
https://stat.ethz.ch/pipermail/r-devel/2011-November/062586.html.
New function paste0(), an efficient version of
paste(*, sep=""), to be used in many places for more
concise (and slightly more efficient) code.
Function setClass() in package methods now
returns, invisibly, a generator function for the new class,
slightly preferred to calling new(), as explained on the
setClass help page.
The "dendrogram" method of str() now takes
its default for last.str from option str.dendrogram.last.
New simple fitted() method for "kmeans" objects.
The traceback() function can now be called with
an integer argument, to display a current stack trace. (Wish of
PR#14770.)
setGeneric() calls can be simplified when creating
a new generic function by supplying the default method as the
def argument. See ?setGeneric.
serialize() has a new option xdr = FALSE which
will use the native byte-order for binary serializations. In
scenarios where only little-endian machines are involved (these
days, close to universal) and (un)serialization takes an
appreciable amount of time this may speed up noticeably
transferring data between systems.
The internal (un)serialization code is faster for long vectors, particularly with XDR on some platforms. (Based on a suggested patch by Michael Spiegel.)
For consistency, circles with zero radius are omitted by
points() and grid.circle(). Previously this was
device-dependent, but they were usually invisible.
NROW(x) and NCOL(x) now work whenever
dim(x) looks appropriate, e.g., also for more generalized
matrices.
PCRE has been updated to version 8.30.
The internal R_Srcref variable is now updated
before the browser stops on entering a function. (Suggestion of
PR#14818.)
There are ‘bare-bones’ functions .colSums(),
.rowSums(), .colMeans() and .rowMeans() for
use in programming where ultimate speed is required.
The formerly internal function
.package_dependencies() from package tools for
calculating (recursive) (reverse) dependencies on package databases
has been renamed to package_dependencies() and is now
exported.
There is a new function optimHess() to compute the
(approximate) Hessian for an optim() solution if
hessian = TRUE was forgotten.
.filled.contour() is a ‘bare-bones’ function to
add a filled-contour rectangular plot to an already prepared plot
region.
The stepping in debugging and single-step browsing modes has
changed slightly: now left braces at the start of the body are
stepped over for if statements as well as for for and
while statements. (Wish of PR#14814.)
library() no longer warns about a conflict with a
function from package:base if the function has the same
code as the base one but with a different environment. (An
example is Matrix::det().)
When deparsing very large language objects,
as.character() now inserts newlines after each line of
approximately 500 bytes, rather than truncating to the first
line.
New function rWishart() generates Wishart-distributed
random matrices.
Packages may now specify actions to be taken when the
package is loaded (setLoadActions()).
options(max.print = Inf) and similar now give an
error (instead of warnings later).
The "difftime" replacement method of units
tries harder to preserve other attributes of the argument. (Wish
of PR#14839.)
poly(raw = TRUE) no longer requires more unique
points than the degree. (Requested by John Fox.)
There is a new function mcmapply(), a parallel version
of mapply(), and a wrapper mcMap(), a parallel
version of Map().
A default cluster can be registered by the new function
setDefaultCluster(): this will be used by default in
functions such as parLapply().
clusterMap() has a new argument .scheduling to
allow the use of load-balancing.
There are new load-balancing functions parLapplyLB()
and parSapplyLB().
makePSOCKCluster() has a new option useXDR =
FALSE which can be used to avoid byte-shuffling for
serialization when all the nodes are known to be little-endian (or
all big-endian).
Non-ASCII vignettes without a declared encoding are no longer accepted.
C/C++ code in packages is now compiled with -NDEBUG
to mitigate against the C/C++ function assert being called
in production use. Developers can turn this off during package
development with PKG_CPPFLAGS = -UNDEBUG.
R CMD INSTALL has a new option --dsym
which on Mac OS X (Darwin) dumps the symbols alongside the
‘.so’ file: this is helpful when debugging with
valgrind (and especially when installing packages into
‘R.framework’). [This can also be enabled by setting the
undocumented environment variable PKG_MAKE_DSYM, since R
2.12.0.]
R CMD INSTALL will test loading under all installed
sub-architectures even for packages without compiled code, unless
the flag --no-multiarch is used. (Pure R packages can
do things which are architecture-dependent: in the case which
prompted this, looking for an icon in a Windows R executable.)
There is a new option install.packages(type = "both")
which tries source packages if binary packages are not available,
on those platforms where the latter is the default.
The meaning of install.packages(dependencies = TRUE)
has changed: it now means to install the essential dependencies of
the named packages plus the Suggests, but only the
essential dependencies of dependencies. To get the previous
behaviour, specify dependencies as a character vector.
R CMD INSTALL --merge-multiarch is now supported
on OS X and other Unix-alikes using multiple sub-architectures.
R CMD INSTALL --libs-only now by default does a
test load on Unix-alikes as well as on Windows: suppress with
--no-test-load.
R CMD check now gives a warning rather than a
note if it finds inefficiently compressed datasets. With
bzip2 and xz compression having been
available since R 2.10.0, it only exceptionally makes sense to
not use them.
The environment variable _R_CHECK_COMPACT_DATA2_ is no longer consulted: the check is always done if _R_CHECK_COMPACT_DATA_ has a true value (its default).
Where multiple sub-architectures are to be tested,
R CMD check now runs the examples and tests for all the
sub-architectures even if one fails.
R CMD check can optionally report timings on
various parts of the check: this is controlled by environment
variable _R_CHECK_TIMINGS_ documented in ‘Writing R
Extensions’. Timings (in the style of R CMD BATCH) are
given at the foot of the output files from running each test and
the R code in each vignette.
There are new options for more rigorous testing by
R CMD check selected by environment variables – see
the ‘Writing R Extensions’ manual.
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’ file to compute information about packages,
for example reverse dependencies.
The defaults for some of the options in R CMD
check (described in the ‘R Internals’ 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’ files from libraries
(including 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 --help.
R CMD build has a new option --md5 to
add an ‘MD5’ file (as done by CRAN): this is used by R
CMD INSTALL to check the integrity of the distribution.
If this option is not specified, any existing (and probably stale) ‘MD5’ file is removed.
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
first three arguments is now disallowed.
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 applies
to library.dynam.unload() and to useDynLib
directives in ‘NAMESPACE’ files.
The internal functions .readRDS() and
.saveRDS() are now defunct.
The off-line help() types "postscript" and
"ps" are defunct.
Sys.putenv(), replaced and deprecated in R 2.5.0, is
finally removed.
Some functions/objects which have been defunct for five 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(),
symbol.For() and unix().
The ENCODING argument to .C() is deprecated.
It was intended to smooth the transition 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 instruments 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 passes a pairlist as a SEXP to the compiled
code. This is as was documented, but pairlists were in reality
handled differently as a legacy from the early days of R.
call_R and call_S are deprecated. They still
exist in the headers and 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 NA_integer_.
(PR#14754)
The exportMethods directive in a ‘NAMESPACE’
file now exports S4 generics as necessary, as the extensions
manual said it does. The manual has also been updated to be a
little 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 Morgan).
merge() is no longer allowed (in some ways) to create
a data frame with duplicate column names (which confused
PR#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 off (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 finite 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 order.
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
Rd2HTML(). (PR#14841)
Axis tick marks could go out of range when a log scale was used. (PR#14833)
Signature objects in methods were not allocated as S4
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 files,
and will skip them with a warning.
PCRE has been upgraded to version 8.21: as well as bug fixes and greater Perl compatibility, this adds a JIT pattern compiler, about which PCRE's news says ‘large performance benefits 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 find 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" files 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
file types from ‘inst/doc’: these are almost certainly
mistakes and for some packages are wasting a lot of space. These
are ‘Makefile’, files generated by running LaTeX, and unless
the package uses a ‘vignettes’ directory, PostScript and
image bitmap files.
Note that only PDF vignettes have ever been supported: some of these files come from DVI/PS output from the Sweave defaults prior to R 2.13.0.
R configured with --disable-openmp would mistakenly
set HAVE_OPENMP (internal) and SUPPORT_OPENMP (in
‘Rconfig.h’) even though no OpenMP flags were populated.
The getS3method() implementation had an old
computation to find an S4 default method.
readLines() could overflow a buffer if the last line
of the file was not terminated. (PR#14766)
R CMD check could miss undocumented S4 objects in
packages which used S4 classes but did not Depends: methods
in their ‘DESCRIPTION’ file.
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, PR#14773)
image(x, useRaster=TRUE) misbehaved on single-column
x. (PR#14774)
Negative values for options("max.print") or the max
argument to print.default() caused crashes. Now the former
are ignored and the latter trigger an error. (PR#14779)
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 file 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 Sören Vogel.)
Printing of arrays did not have enough protection (C level),
e.g., in the context of capture.output(). (Reported by
Hervé Pagès and Martin Morgan.)
pdf(file = NULL) would produce a spurious file 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
file 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. (Reported by Cleridy
Lennert.)
predict.lm(*, type="terms", terms=*, se.fit=TRUE) did
not work. (PR#14817)
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 in parallel.
.Primitive() could be mis-used to call
.Internal() entry points.
CHANGES IN R VERSION 2.14.1parallel::detectCores() is now able to find 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 detectCores(logical = TRUE) on that platform.
Reference classes now keep a record of which fields are
locked. $lock() with no arguments returns the names
of the locked fields.
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 specification of
an environment from which to export.
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 with multicore (and as part of
parallel) because the parent and all the children share a
session temporary directory, and they can share 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 differ
for an S4 object by calling show() rather than
print()).
filled.contour() now accepts infinite values:
previously it might have generated invalid graphics files
(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 of manuals).
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 file ‘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 specified 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 pdf().
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() fits, for consistency with lm(). This affects
the BIC() values reported for such glm() fits.
(Spotted by Bill Dunlap.)
options(warn = 0) failed to end a (C-level) context
with more than 50 accumulated warnings. (Spotted by Jeffrey
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 Hervé Pagès.)
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 KalmanSmooth(). (PR#14738)
pbinom(10, 1e6, 0.01, log.p = TRUE) was NaN
thanks to the buggy fix to PR#14320 in R 2.11.0. (PR#14739)
RweaveLatex() now emulates auto-printing rather than
printing, by calling methods::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 fix. (PR#14750)
srcfilecopy() has gained a new argument isFile
and now records the working directory, to allow debuggers to find
the original source file. (PR#14826)
LaTeX conversion of Rd files did not correctly handle preformatted backslashes. (PR#14751)
HTML conversion of Rd files did not handle markup within tabular cells properly. (PR#14708)
source() on an empty file with keep.source =
TRUE tried to read from stdin(), in R 2.14.0 only.
(PR#14753)
The code to check Rd files in packages would abort if duplicate description sections were present.
CHANGES IN R VERSION 2.14.0All packages must have a namespace, and one is created on installation if not supplied in the sources. This means that 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 of PR#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 R.
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 need adjustment.
:: 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 and snow (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 multicore or snow on help pages).
It also contains support for multiple RNG streams following
L'Ecuyer et al (2002), with support for both
mclapply and snow clusters. This replaces functions
like clusterSetupRNG() from snow (which are not in
parallel).
The version released for R 2.14.0 contains base functionality: higher-level convenience functions are planned (and some are already available in the ‘R-devel’ version of R).
Building PDF manuals (for R itself or packages,
e.g. via R CMD check) by default requires the
LaTeX package inconsolata: see the section on
‘Making the manuals’ in the ‘R Installation and
Administration Manual’.
axTicks(*, log=TRUE) has changed in some cases to
satisfy the documented behavior and be consistent.
txtProgressBar() can write to an open connection
instead of the console.
Non-portable package names ending in ‘.’ are no longer allowed. Nor are single-character package names (R was already disallowed).
regexpr() and gregexpr() with perl =
TRUE allows Python-style named captures. (Wish and
contribution of PR#14518.)
The placement of ‘plotmath’ text in the margins of plots done by base graphics now makes the same vertical adjustment as ordinary text, so using ordinary and plotmath text on the same margin line will seem better aligned (but not exactly aligned, since ordinary text has descenders below the baseline and plotmath places them on the baseline). (Related to PR#14537.)
sunflowerplot() now has a formula interface.
(Wish of PR#14541.)
iconv() has a new argument toRaw to handle
encodings such as UTF-16 with embedded nuls (as was
possible before the CHARSXP cache was introduced).
It will also accept as input the type of list generated with
toRaw = TRUE.
Garbage-collecting an unused input text connection no longer gives a warning (since it ‘connects’ to nothing outside R).
read.table() and scan() have gained a
text argument, to allow reading data from a (possibly
literal) character string.
optim(*, method = .) now allows method = "Brent"
as an interface to optimize(), for use in cases such as
mle() where optim() is used internally.
mosaicplot() gains a border argument.
(Wish of PR#14550.)
smooth.spline() gains a tol argument which
controls how different x values need to be to be treated as
distinct. The default has been changed to be more reliable for
inputs whose range is small compared to their maximum absolute
value. (Wish of PR#14452.)
gl() runs faster by avoiding calling factor().
The print() method for object.size() accepts
B as well as b as an abbreviation for ‘bytes’.
unlink() gains a force argument to work like
rm -f and if possible override restrictive permissions.
pbirthday() and qbirthday() now use exact
calculations for coincident = 2.
unzip() and unz() connections have been
updated with support for more recent Zip64 features (including
large file sizes and bzip2 compression, but not UTF-8
file names).
unzip() has a new option to restore file times from those
recorded (in an unknown timezone) in the zip file.
update.packages() now accepts a character vector of
package names for the oldPkgs argument. (Suggestion of
Tal Galili.)
The special reference class fields .self and
.refClassDef are now read-only to prevent corrupting
the object.
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 efficient score test has been implemented for
glm objects. Specifically, 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 start.
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 defined. See the section on slots
in ?Classes.
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 dispatching 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 specified 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 default x limits from the previous plot
(if any): rather they default to c(0, 1) just as the
"function" method for plot(). To get the previous
behaviour 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 as previously).
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 file (including a directory). See its help for exactly
which times it sets on various OSes.
The file times reported by file.info() are reported
to sub-second resolution on systems which support it. (Currently
the POSIX 2008 and FreeBSD/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 packages.)
Sys.info() gains a euser component to report
the ‘effective’ user on OSes which have that concept.
The result returned by try() now contains the
original error condition object as the "condition"
attribute.
All packages with R code are lazy-loaded irrespective of the LazyLoad field in the ‘DESCRIPTION’ file. A warning is given if the LazyLoad field is overridden.
Rd markup has a new \figure tag so that
figures can be included in help pages when converted to HTML or
LaTeX. There are examples on the help pages for par() and
points().
The built-in httpd server now allows access to files
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 is a new function texi2pdf() in package
tools, currently a convenience wrapper for
texi2dvi(pdf = TRUE).
There are two new options for typesetting PDF manuals from Rd files. These are beramono and inconsolata, and used the named font for monospaced output. 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 defined 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 differences in pointer values when comparing printed
environments, compiled byte code, etc.
The "source" attribute on functions created with
keep.source=TRUE has been replaced with a "srcref"
attribute. The "srcref" attribute references an in-memory
copy of the source file using the "srcfilecopy" class or
the new "srcfilealias" class.
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 and Technical Papers have 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 messages have been standardized to use “namespace” rather than “name space”.
setGeneric() now looks in the default packages for
a non-generic version of a function if called from a package with a
namespace. (It always did for packages without a namespace.)
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 specified 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’