The ‘Changes in R’ article from the 2010-2 issue.
CHANGES IN R VERSION 2.12.1
NEW FEATURES
The DVI/PDF reference manual now includes the help pages for all the standard packages: splines, stats4 and tcltk were previously omitted (intentionally).
http://www.rforge.net has been added to the default set of
repositories known to setRepositories()
.
xz-utils has been updated to version 5.0.0.
reshape()
now makes use of sep
when forming names during
reshaping to wide format. (PR#14435)
legend()
allows the length of lines to be set by the end user
via the new argument seg.len
.
New reference class utility methods copy()
, field()
,
getRefClass()
and getClass()
have been added.
When a character value is used for the EXPR
argument in
switch()
, a warning is given if more than one unnamed alternative
value is given. This will become an error in R 2.13.0.
StructTS(type = "BSM")
now allows series with just two seasons.
(Reported by Birgit Erni.)
INSTALLATION
The PDF reference manual is now built as PDF version 1.5 with object compression, which on platforms for which this is not the default (notably MiKTeX) halves its size.
Variable can be set during configuration, for any additional library flags needed when linking a shared object with the Fortran 9x compiler. (Needed with Solaris Studio 12.2.)
BUG FIXES
seq.int()
no longer sometimes evaluates arguments twice.
(PR#14388)
The data.frame
method of format()
failed if a column name was
longer than 256 bytes (the maximum length allowed for an R name).
predict(<lm object>, type ="terms", ...)
failed if both terms
and interval
were specified. (Reported by Bill Dunlap.)
Also, if se.fit = TRUE
the standard errors were reported for all
terms, not just those selected by a non-null terms
.
The TRE regular expressions engine could terminate R rather than give an error when given certain invalid regular expressions. (PR#14398)
cmdscale(eig = TRUE)
was documented to return \(n-1\) eigenvalues
but in fact only returned k
. It now returns all \(n\) eigenvalues.
cmdscale(add = TRUE)
failed to centre the return configuration and
sometimes lost the labels on the points. Its return value was
described wrongly (it is always a list and contains component ac
).
promptClass()
in package methods now works for reference classes
and gives a suitably specialized skeleton of documentation.
Also, callSuper()
now works via the methods()
invocation as well
as for initially specified methods.
download.file()
could leave the destination file open if the URL
was not able to be opened. (PR#14414)
Assignment of an environment to functions or as an attribute to
other objects now works for S4 subclasses of "environment"
.
Use of [[<-
for S4 subclasses of "environment"
generated an
infinite recursion from the method. The method has been replaced by
internal code.
In a reference class S4 method, callSuper()
now works in
initialize()
methods when there is no explicit superclass method.
!
dropped attributes such as names and dimensions from a
length-zero argument. (PR#14424)
When list2env()
created an environment it was missing a PROTECT
call and so was vulnerable to garbage collection.
Sweave()
with keep.source=TRUE
dropped comments at the start and
end of code chunks. It could also fail when \\SweaveInput
was
combined with named chunks.
The Fortran code used by nls(algorithm = "port")
could
infinite-loop when compiled with high optimization on a modern
version of gcc
, and SAFE_FFLAGS
is now used to make this less
likely. (PR#14427, seen with 32-bit Windows using gcc 4.5.0
used
from R 2.12.0.)
sapply()
with default simplify = TRUE
and mapply()
with
default SIMPLIFY = TRUE
wrongly simplified language-like results,
as, e.g., in
mapply(1:2, c(3,7), FUN = function(i,j) call(’:’,i,j))
.
Backreferences to undefined patterns in [g]sub(pcre = TRUE)
could
cause a segfault. (PR#14431)
The format()
(and hence the print()
) method for class "Date"
rounded fractional dates towards zero: it now always rounds them
down.
Reference S4 class creation could generate ambiguous inheritance patterns under very special circumstances.
[[<-
turned S4 subclasses of "environment"
into plain
environments.
Long titles for help pages were truncated in package indices and a few other places.
Additional utilities now work correctly with S4 subclasses of
"environment"
(rm
, locking tools and active bindings).
spec.ar()
now also work for the "ols"
method. (Reported by
Hans-Ruedi Kuensch.)
The initialization of objects from S4 subclasses of "environment"
now allocates a new environment object.
R CMD check
has more protection against (probably erroneous)
example or test output which is invalid in the current locale.
qr.X()
with column names and pivoting now also pivots the column
names. (PR#14438)
unit.pmax()
and unit.pmin()
in package grid gave incorrect
results when all inputs were of length 1. (PR#14443)
The parser for NAMESPACE
files ignored misspelled directives,
rather than signalling an error. For 2.12.x a warning will be
issued, but this will be correctly reported as an error in later
releases. (Reported by Charles Berry.)
Fix for subsetting of "raster"
objects when only one of i
or j
is specified.
grid.raster()
in package grid did not accept "nativeRaster"
objects (like rasterImage()
does).
Rendering raster images in PDF output was resetting the clipping region.
Rendering of raster images on Cairo X11 device was wrong, particularly when a small image was being scaled up using interpolation.
With Cairo < 1.6, will be better than before, though still a little clunky. With Cairo >= 1.6, should be sweet as.
Several bugs fixed in read.DIF()
: single column inputs caused
errors, cells marked as "character"
could be converted to other
types, and (in Windows) copying from the clipboard failed.
CHANGES IN R VERSION 2.12.0
NEW FEATURES
Reading a package’s CITATION
file now defaults to ASCII rather
than Latin-1: a package with a non-ASCII CITATION
file should
declare an encoding in its DESCRIPTION
file and use that encoding
for the CITATION
file.
difftime()
now defaults to the "tzone"
attribute of "POSIXlt"
objects rather than to the current timezone as set by the default
for the tz
argument. (Wish of PR#14182.)
pretty()
is now generic, with new methods for "Date"
and
"POSIXt"
classes (based on code contributed by Felix Andrews).
unique()
and match()
are now faster on character vectors where
all elements are in the global CHARSXP
cache and have unmarked
encoding (ASCII). Thanks to Matthew Dowle for suggesting
improvements to the way the hash code is generated in unique.c
.
The enquote()
utility, in use internally, is exported now.
.C()
and .Fortran()
now map non-zero return values (other than
NA_LOGICAL
) for logical vectors to TRUE
: it has been an implicit
assumption that they are treated as true.
The print()
methods for "glm"
and "lm"
objects now insert
linebreaks in long calls in the same way that the print()
methods
for "summary.[g]lm"
objects have long done. This does change the
layout of the examples for a number of packages, e.g. MASS.
(PR#14250)
constrOptim()
can now be used with method "SANN"
. (PR#14245)
It gains an argument hessian
to be passed to optim()
, which
allows all the ...
arguments to be intended for f()
and
grad()
. (PR#14071)
curve()
now allows expr
to be an object of mode "expression"
as well as "call"
and "function"
.
The "POSIX[cl]t"
methods for Axis()
have been replaced by a
single method for "POSIXt"
.
There are no longer separate plot()
methods for "POSIX[cl]t"
and
"Date"
: the default method has been able to handle those classes
for a long time. This inter alia allows a single date-time object
to be supplied, the wish of PR#14016.
The methods had a different default (""
) for xlab
.
Classes "POSIXct"
, "POSIXlt"
and "difftime"
have generators
.POSIXct()
, .POSIXlt()
and .difftime()
. Package authors are
advised to make use of them (they are available from R 2.11.0) to
proof against planned future changes to the classes.
The ordering of the classes has been changed, so "POSIXt"
is now
the second class. See the document ‘Updating packages for changes in
R 2.12.x’ on http://developer.r-project.org for the consequences
for a handful of CRAN packages.
The "POSIXct"
method of as.Date()
allows a timezone to be
specified (but still defaults to UTC).
New list2env()
utility function as an inverse of
as.list(<environment>)
and for fast multi-assign()
to existing
environment. as.environment()
is now generic and uses list2env()
as list method.
There are several small changes to output which ‘zap’ small numbers,
e.g. in printing quantiles of residuals in summaries from "lm"
and
"glm"
fits, and in test statistics in print.anova()
.
Special names such as "dim"
, "names"
, etc, are now allowed as
slot names of S4 classes, with "class"
the only remaining
exception.
File .Renviron
can have architecture-specific versions such as
.Renviron.i386
on systems with sub-architectures.
installed.packages()
has a new argument subarch
to filter on
sub-architecture.
The summary()
method for packageStatus()
now has a separate
print()
method.
The default summary()
method returns an object inheriting from
class "summaryDefault"
which has a separate print()
method that
calls zapsmall()
for numeric/complex values.
The startup message now includes the platform and if used, sub-architecture: this is useful where different (sub-)architectures run on the same OS.
The getGraphicsEvent()
mechanism now allows multiple windows to
return graphics events, through the new functions
setGraphicsEventHandlers()
, setGraphicsEventEnv()
, and
getGraphicsEventEnv()
. (Currently implemented in the windows()
and X11()
devices.)
tools::texi2dvi()
gains an index
argument, mainly for use by
R CMD Rd2pdf
.
It avoids the use of texindy
by texinfo
‘s texi2dvi >= 1.157
,
since that does not emulate ’makeindex’ well enough to avoid
problems with special characters (such as (
, {
, !
) in indices.
The ability of readLines()
and scan()
to re-encode inputs to
marked UTF-8 strings on Windows since R 2.7.0 is extended to
non-UTF-8 locales on other OSes.
scan()
gains a fileEncoding
argument to match read.table()
.
points()
and lines()
gain "table"
methods to match plot()
.
(Wish of PR#10472.)
Sys.chmod()
allows argument mode
to be a vector, recycled along
paths
.
There are |
, &
and xor()
methods for classes "octmode"
and
"hexmode"
, which work bitwise.
Environment variables , , , are no longer used nor set in an R
session. (With the move to tools::texi2dvi()
, the conventional
environment variables , and will be used. options("dvipscmd")
defaults to the value of , then to "dvips"
.)
New function isatty()
to see if terminal connections are
redirected.
summaryRprof()
returns the sampling interval in component
sample.interval
and only returns in by.self
data for functions
with non-zero self times.
print(x)
and str(x)
now indicate if an empty list x
is named.
install.packages()
and remove.packages()
with lib
unspecified
and multiple libraries in .libPaths()
inform the user of the
library location used with a message rather than a warning.
There is limited support for multiple compressed streams on a file:
all of [bgx]zfile()
allow streams to be appended to an existing
file, but bzfile()
reads only the first stream.
Function person()
in package utils now uses a given/family
scheme in preference to first/middle/last, is vectorized to handle
an arbitrary number of persons, and gains a role
argument to
specify person roles using a controlled vocabulary (the MARC relator
terms).
Package utils adds a new "bibentry"
class for representing and
manipulating bibliographic information in enhanced BibTeX style,
unifying and enhancing the previously existing mechanisms.
A bibstyle()
function has been added to the tools package with
default JSS style for rendering "bibentry"
objects, and a
mechanism for registering other rendering styles.
Several aspects of the display of text help are now customizable
using the new Rd2txt_options()
function.
options("help_text_width"
) is no longer used.
Added \\href
tag to the Rd format, to allow hyperlinks to URLs
without displaying the full URL.
Added \\newcommand
and \\renewcommand
tags to the Rd format, to
allow user-defined macros.
New toRd()
generic in the tools package to convert objects to
fragments of Rd code, and added "fragment"
argument to Rd2txt()
,
Rd2HTML()
, and Rd2latex()
to support it.
Directory R_HOME/share/texmf
now follows the TDS conventions, so
can be set as a texmf
tree (‘root directory’ in MiKTeX parlance).
S3 generic functions now use correct S4 inheritance when dispatching
on an S4 object. See ?Methods
, section on “Methods for S3 Generic
Functions” for recommendations and details.
format.pval()
gains a ...
argument to pass arguments such as
nsmall
to format()
. (Wish of PR#9574)
legend()
supports title.adj
. (Wish of PR#13415)
Added support for subsetting "raster"
objects, plus assigning to a
subset, conversion to a matrix (of colour strings), and comparisons
(==
and !=
).
Added a new parseLatex()
function (and related functions
deparseLatex()
and latexToUtf8()
) to support conversion of
bibliographic entries for display in R.
Text rendering of \\itemize
in help uses a Unicode bullet in UTF-8
and most single-byte Windows locales.
Added support for polygons with holes to the graphics engine. This
is implemented for the pdf()
, postscript()
, x11(type="cairo")
,
windows()
, and quartz()
devices (and associated raster formats),
but not for x11(type="Xlib")
or xfig()
or pictex()
. The
user-level interface is the polypath()
function in graphics and
grid.path()
in grid.
File NEWS
is now generated at installation with a slightly
different format: it will be in UTF-8 on platforms using UTF-8, and
otherwise in ASCII. There is also a PDF version, NEWS.pdf
,
installed at the top-level of the R distribution.
kmeans(x, 1)
now works. Further, kmeans
now returns between and
total sum of squares.
arrayInd()
and which()
gain an argument useNames
. For
arrayInd
, the default is now false, for speed reasons.
As is done for closures, the default print
method for the formula
class now displays the associated environment if it is not the
global environment.
A new facility has been added for inserting code into a package
without re-installing it, to facilitate testing changes which can be
selectively added and backed out. See ?insertSource
.
New function readRenviron
to (re-)read files in the format of
~/.Renviron
and Renviron.site
.
require()
will now return FALSE
(and not fail) if loading the
package or one of its dependencies fails.
aperm()
now allows argument perm
to be a character vector when
the array has named dimnames (as the results of table()
calls do).
Similarly, array()
allows MARGIN
to be a character vector.
(Based on suggestions of Michael Lachmann.)
Package utils now exports and documents functions
aspell_package_Rd_files()
and aspell_package_vignettes()
for
spell checking package Rd files and vignettes using Aspell, Ispell
or Hunspell.
Package news can now be given in Rd format, and news()
prefers
these inst/NEWS.Rd
files to old-style plain text NEWS
or
inst/NEWS
files.
New simple function packageVersion()
.
The PCRE library has been updated to version 8.10.
The standard Unix-alike terminal interface declares its name to
readline as ‘R’, so that can be used for conditional sections in
~/.inputrc
files.
‘Writing R Extensions’ now stresses that the standard sections in
.Rd
files (other than \\alias
, \\keyword
and \\note
) are
intended to be unique, and the conversion tools now drop duplicates
with a warning.
The .Rd
conversion tools also warn about an unrecognized type in a
\\docType
section.
ecdf()
objects now have a quantile()
method.
format()
methods for date-time objects now attempt to make use of
a "tzone"
attribute with "%Z"
and "%z"
formats, but it is not
always possible. (Wish of PR#14358.)
tools::texi2dvi(file, clean = TRUE)
now works in more cases (e.g.
where emulation is used and when file
is not in the current
directory).
New function droplevels()
to remove unused factor levels.
system(command, intern = TRUE)
now gives an error on a Unix-alike
(as well as on Windows) if command
cannot be run. It reports a
non-success exit status from running command
as a warning.
On a Unix-alike an attempt is made to return the actual exit status
of the command in system(intern = FALSE)
: previously this had been
system-dependent but on POSIX-compliant systems the value return was
256 times the status.
system()
has a new argument ignore.stdout
which can be used to
(portably) ignore standard output.
system(intern = TRUE)
and pipe()
connections are guaranteed to
be available on all builds of R.
Sys.which()
has been altered to return ""
if the command is not
found (even on Solaris).
A facility for defining reference-based S4 classes (in the OOP style
of Java, C++, etc.) has been added experimentally to package
methods; see ?ReferenceClasses
.
The predict
method for "loess"
fits gains an na.action
argument which defaults to na.pass
rather than the previous
default of na.omit
.
Predictions from "loess"
fits are now named from the row names of
newdata
.
Parsing errors detected during Sweave()
processing will now be
reported referencing their original location in the source file.
New adjustcolor()
utility, e.g., for simple translucent color
schemes.
qr()
now has a trivial lm
method with a simple (fast) validity
check.
An experimental new programming model has been added to package
methods for reference (OOP-style) classes and methods. See
?ReferenceClasses
.
bzip2 has been updated to version 1.0.6 (bug-fix release). now requires at least version 1.0.6.
R now provides jss.cls
and jss.bst
(the class and bib style file
for the Journal of Statistical Software) as well as RJournal.bib
and Rnews.bib
, and R CMD
ensures that the .bst
and .bib
files are found by BibTeX.
Functions using the environment variable no longer quote the value
when making system
calls. This allows values such as
tar –force-local
, but does require additional quotes in, e.g.,
TAR = "’/path with spaces/mytar’"
.
DEPRECATED & DEFUNCT
Supplying the parser with a character string containing both octal/hex and Unicode escapes is now an error.
File extension .C
for C++ code files in packages is now defunct.
R CMD check
no longer supports configuration files containing Perl
configuration variables: use the environment variables documented in
‘R Internals’ instead.
The save
argument of require()
now defaults to FALSE
and
save = TRUE
is now deprecated. (This facility is very rarely
actually used, and was superseded by the Depends
field of the
DESCRIPTION
file long ago.)
R CMD check –no-latex
is deprecated in favour of .
R CMD Sd2Rd
is formally deprecated and will be removed in R
2.13.0.
PACKAGE INSTALLATION
install.packages()
has a new argument libs_only
to optionally
pass to R CMD INSTALL
and works analogously for Windows binary
installs (to add support for 64- or 32-bit Windows).
When sub-architectures are in use, the installed architectures are
recorded in the Archs
field of the DESCRIPTION
file. There is a
new default filter, "subarch"
, in available.packages()
to make
use of this.
Code is compiled in a copy of the src
directory when a package is
installed for more than one sub-architecture: this avoid problems
with cleaning the sources between building sub-architectures.
R CMD INSTALL –libs-only
no longer overrides the setting of
locking, so a previous version of the package will be restored
unless is specified.
UTILITIES
R CMD Rprof|build|check
are now based on R rather than Perl
scripts. The only remaining Perl scripts are the deprecated
R CMD Sd2Rd
and install-info.pl
(used only if install-info
is
not found) as well as some maintainer-mode-only scripts.
because these have been completely rewritten, users should not expect undocumented details of previous implementations to have been duplicated.
R CMD
no longer manipulates the environment variables and .
R CMD check
has a new argument to confine tests to those needed to
check an additional sub-architecture.
Its check for “Subdirectory ‘inst’ contains no files” is more thorough: it looks for files, and warns if there are only empty directories.
Environment variables such as and those used for customization can
be set for the duration of checking via a file
~/.R/check.Renviron
(in the format used by .Renviron
, and with
sub-architecture specific versions such as
~/.R/check.Renviron.i386
taking precedence).
There are new options to check the package under all of the
installed sub-architectures and to confine checking to the
sub-architecture under which check
is invoked. If neither option
is supplied, a test is done of installed sub-architectures and all
those which can be run on the current OS are used.
Unless multiple sub-architectures are selected, the install done by
check
for testing purposes is only of the current sub-architecture
(via R CMD INSTALL –no-multiarch
).
It will skip the check for non-ascii characters in code or data if the environment variables or are respectively set to . (Suggestion of Vince Carey.)
R CMD build
no longer creates an INDEX
file (R CMD INSTALL
does so), and –force
removes (rather than overwrites) an existing
INDEX
file.
It supports a file ~/.R/build.Renviron
analogously to check
.
It now runs build-time \\Sexpr
expressions in help files.
R CMD Rd2dvi
makes use of tools::texi2dvi()
to process the
package manual. It is now implemented entirely in R (rather than
partially as a shell script).
R CMD Rprof
now uses utils::summaryRprof()
rather than Perl. It
has new arguments to select one of the tables and to limit the
number of entries printed.
R CMD Sweave
now runs R with –vanilla
so the environment setting
of will always be used.
C-LEVEL FACILITIES
lang5()
and lang6()
(in addition to pre-existing lang[1-4]()
)
convenience functions for easier construction of eval()
calls. If
you have your own definition, do wrap it inside
#ifndef lang5 .... #endif
to keep it working with old and new R.
Header R.h
now includes only the C headers it itself needs, hence
no longer includes errno.h
. (This helps avoid problems when it is
included from C++ source files.)
Headers Rinternals.h
and R_ext/Print.h
include the C++ versions
of stdio.h
and stdarg.h
respectively if included from a C++
source file.
INSTALLATION
A C99 compiler is now required, and more C99 language features will be used in the R sources.
Tcl/Tk >= 8.4 is now required (increased from 8.3).
System functions access
, chdir
and getcwd
are now essential to
configure R. (In practice they have been required for some time.)
make check
compares the output of the examples from several of the
base packages to reference output rather than the previous output
(if any). Expect some differences due to differences in
floating-point computations between platforms.
File NEWS
is no longer in the sources, but generated as part of
the installation. The primary source for changes is now
doc/NEWS.Rd
.
The popen
system call is now required to build R. This ensures the
availability of system(intern = TRUE)
, pipe()
connections and
printing from postscript()
.
The pkg-config
file libR.pc
now also works when R is installed
using a sub-architecture.
R has always required a BLAS that conforms to IE60559 arithmetic, but after discovery of more real-world problems caused by a BLAS that did not, this is tested more thoroughly in this version.
BUG FIXES
Calls to selectMethod()
by default no longer cache inherited
methods. This could previously corrupt methods used by as()
.
The densities of non-central chi-squared are now more accurate in
some cases in the extreme tails, e.g. dchisq(2000, 2, 1000)
, as a
series expansion was truncated too early. (PR#14105)
pt()
is more accurate in the left tail for ncp
large, e.g.
pt(-1000, 3, 200)
. (PR#14069)
The default C function (R_binary
) for binary ops now sets the S4
bit in the result if either argument is an S4 object. (PR#13209)
source(echo=TRUE)
failed to echo comments that followed the last
statement in a file.
S4 classes that contained one of "matrix"
, "array"
or "ts"
and
also another class now accept superclass objects in new()
. Also
fixes failure to call validObject()
for these classes.
Conditional inheritance defined by argument test
in
methods::setIs()
will no longer be used in S4 method selection
(caching these methods could give incorrect results). See ?setIs
.
The signature of an implicit generic is now used by setGeneric()
when that does not use a definition nor explicitly set a signature.
A bug in callNextMethod()
for some examples with "..."
in the
arguments has been fixed. See file
src/library/methods/tests/nextWithDots.R
in the sources.
match(x, table)
(and hence %in%
) now treat "POSIXlt"
consistently with, e.g., "POSIXct"
.
Built-in code dealing with environments (get()
, assign()
,
parent.env()
, is.environment()
and others) now behave
consistently to recognize S4 subclasses; is.name()
also recognizes
subclasses.
The abs.tol
control parameter to nlminb()
now defaults to 0.0
to avoid false declarations of convergence in objective functions
that may go negative.
The standard Unix-alike termination dialog to ask whether to save
the workspace takes a EOF response as n
to avoid problems with a
damaged terminal connection. (PR#14332)
Added warn.unused
argument to hist.default()
to allow
suppression of spurious warnings about graphical parameters used
with plot=FALSE
. (PR#14341)
predict.lm()
, summary.lm()
, and indeed lm()
itself had issues
with residual DF in zero-weighted cases (the latter two only in
connection with empty models). (Thanks to Bill Dunlap for spotting
the predict()
case.)
aperm()
treated resize = NA
as resize = TRUE
.
constrOptim()
now has an improved convergence criterion, notably
for cases where the minimum was (very close to) zero; further, other
tweaks inspired from code proposals by Ravi Varadhan.
Rendering of S3 and S4 methods in man pages has been corrected and made consistent across output formats.
Simple markup is now allowed in \\title
sections in .Rd
files.
The behaviour of as.logical()
on factors (to use the levels) was
lost in R 2.6.0 and has been restored.
prompt()
did not backquote some default arguments in the \\usage
section. (Reported by Claudia Beleites.)
writeBin()
disallows attempts to write 2GB or more in a single
call. (PR#14362)
new()
and getClass()
will now work if Class is a subclass of
"classRepresentation"
and should also be faster in typical calls.
The summary()
method for data frames makes a better job of names
containing characters invalid in the current locale.
[[
sub-assignment for factors could create an invalid factor
(reported by Bill Dunlap).
Negate(f)
would not evaluate argument f
until first use of
returned function (reported by Olaf Mersmann).
quietly=FALSE
is now also an optional argument of library()
, and
consequently, quietly
is now propagated also for loading dependent
packages, e.g., in require(*, quietly=TRUE)
.
If the loop variable in a for
loop was deleted, it would be
recreated as a global variable. (Reported by Radford Neal; the fix
includes his optimizations as well.)
Task callbacks could report the wrong expression when the task involved parsing new code. (PR#14368)
getNamespaceVersion()
failed; this was an accidental change in
2.11.0. (PR#14374)
identical()
returned FALSE
for external pointer objects even
when the pointer addresses were the same.
L$a@x[] <- val
did not duplicate in a case it should have.
tempfile()
now always gives a random file name (even if the
directory is specified) when called directly after startup and
before the R RNG had been used. (PR#14381)
quantile(type=6)
behaved inconsistently. (PR#14383)
backSpline(.)
behaved incorrectly when the knot sequence was
decreasing. (PR#14386)
The reference BLAS included in R was assuming that 0*x
and x*0
were always zero (whereas they could be NA
or NaN
in IEC 60559
arithmetic). This was seen in results from tcrossprod
, and for
example that log(0) %*% 0
gave 0
.
The calculation of whether text was completely outside the device region (in which case, you draw nothing) was wrong for screen devices (which have [0, 0] at top-left). The symptom was (long) text disappearing when resizing a screen window (to make it smaller). (PR#14391)
model.frame(drop.unused.levels = TRUE)
did not take into account
NA
values of factors when deciding to drop levels. (PR#14393)
library.dynam.unload
required an absolute path for libpath
.
(PR#14385)
Both library()
and loadNamespace()
now record absolute paths for
use by searchpaths()
and getNamespaceInfo(ns, "path")
.
The self-starting model NLSstClosestX
failed if some deviation was
exactly zero. (PR#14384)
X11(type = "cairo")
(and other devices such as png
using
cairographics) and which use Pango font selection now work around a
bug in Pango when very small fonts (those with sizes between 0 and 1
in Pango’s internal units) are requested. (PR#14369)
Added workaround for the font problem with X11(type = "cairo")
and
similar on Mac OS X whereby italic and bold styles were
interchanged. (PR#13463 amongst many other reports.)
source(chdir = TRUE)
failed to reset the working directory if it
could not be determined – that is now an error.
Fix for crash of example(rasterImage)
on x11(type="Xlib")
.
Force Quartz to bring the on-screen display up-to-date immediately
before the snapshot is taken by grid.cap()
in the Cocoa
implementation. (PR#14260)
model.frame
had an unstated 500 byte limit on variable names.
(Example reported by Terry Therneau.)
The 256-byte limit on names is now documented.
Subassignment by [
, [[
or $
on an expression object with value
NULL
coerced the object to a list.
CHANGES IN R VERSION 2.11.1 patched
NEW FEATURES
install.packages()
has a new optional argument INSTALL_opts
which can be used to pass options to R CMD INSTALL
for
source-package installs.
R CMD check
now runs the package-specific tests with to facilitate
comparison to .Rout.save
files.
sessionInfo()
gives more detailed platform information, including
32/64-bit and the sub-architecture if one is used.
DEPRECATED & DEFUNCT
R CMD check
(as
previously documented in ‘Writing R Extensions’) is deprecated and
will be removed in R 2.12.0. Use the environment variables
documented in ‘R Internals’ instead.BUG FIXES
R CMD Rd2dvi
failed if run from a path containing space(s). This
also affected R CMD check
, which calls Rd2dvi
.
stripchart()
could fail with an empty factor level. (PR#14317)
Text help rendering of \\tabular{}
has been improved: under some
circumstances leading blank columns were not rendered.
strsplit(x, fixed=TRUE)
marked UTF-8 strings with the local
encoding when no splits were found.
weighted.mean(NA, na.rm=TRUE)
and similar now returns NaN
again,
as it did prior to R 2.10.0.
R CMD
had a typo in its detection of whether the environment
variable was set (reported by Martin Morgan).
The command-line parser could mistake for one of the options for setting limits for Ncells or Vcells.
The internal strptime()
could corrupt its copy of the timezone
which would then lead to spurious warnings. (PR#14338)
dir.create(recursive = TRUE)
could fail if one of the components
existed but was a directory on a read-only file system. (Seen on
Solaris, where the error code returned is not even listed as
possible on the man page.)
The postscript()
and pdf()
devices will now allow lwd
values
less than 1 (they used to force such values to be 1).
Fixed font face for CID fonts in pdf()
graphics output. (PR#14326)
GERaster()
now checks for width or height of zero and does nothing
in those cases; previously the behaviour was undefined, probably
device-specific, and possibly dangerous.
wilcox.test(x, y, conf.int = TRUE)
failed with an unhelpful
message if x
and y
were constant vectors, and similarly in the
one-sample case. (PR#14329)
Improperly calling Recall()
from outside a function could cause a
segfault. (Reported by Robert McGehee.)
\\Sexpr[result=rd]
in an Rd file added a spurious newline, which
was displayed as extra whitespace when rendered.
require(save = TRUE)
recorded the names of packages it failed to
load.
packageStatus()
could return a data frame with duplicate row names
which could then not be printed.
txtProgressBar(style = 2)
did not work correctly.
txtProgressBar(style = 3)
did not display until a non-minimum
value was set.
contour()
did not display dashed line types properly when contour
lines were labelled. (Reported by David B. Thompson.)
tools::undoc()
again detects undocumented data objects. Of course,
this also affects R CMD check
.
ksmooth(x,NULL)
no longer segfaults.
approxfun()
, approx()
, splinefun()
and spline()
could be
confused by x
values that were different but so close as to print
identically. (PR#14377)
This article is converted from a Legacy LaTeX article using the texor package. The pdf version is the official version. To report a problem with the html, refer to CONTRIBUTE on the R Journal homepage.
Text and figures are licensed under Creative Commons Attribution CC BY 4.0. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: "Figure from ...".
For attribution, please cite this work as
Team, "Changes in R", The R Journal, 2010
BibTeX citation
@article{RJ-2010-2-r-changes, author = {Team, The R Core}, title = {Changes in R}, journal = {The R Journal}, year = {2010}, note = {https://rjournal.github.io/}, volume = {2}, issue = {2}, issn = {2073-4859}, pages = {68-73} }