This blog is updated daily.
A general description is here.
The compiled loess() code had been updated to the current version of dloess from Netlib. This includes patches from Ben Tyner which correct some errors when degree = 0 and hence solve PR#13570.
besselI(x, nu) with nu a negative integer (a singular case) is now correct. (PR#13556)
besselI(x, nu) with nu a negative integer (a singular case) is now correct. (PR#13556)
predict.lm() now works correctly when the fit had more than one offset (possibly specified both in the formula and as an argument). This function is called by predict.glm(), so the same isses are corrected there.
format.info(x) is now also correct when x has no finite content.
Sys.setenv() since R 2.7.0 was limited to 1023 characters for the name+value, and silently truncated the value otherwise. It should now work up to the Windows limit (which is version-dependent).
Input from the Rgui console was changing the letter 255 (ÿ in Latin-2) in the character set to letter 1.
The 'offset' argument for lm() and glm() is not longer documented to be allowed to be of length 1: this has not been true for a long time.
Sys.setenv() and Sys.getenv() now use the Windows API
functions rather than the buggy C runtime functions, allowing
longer settings, e.g. for a long PATH.
Sys.setenv() and Sys.getenv() now use the Windows API
functions rather than the buggy C runtime functions, allowing
longer settings, e.g. for a long PATH.
The relational (aka "comparison") operators are now binary, also in a lower level sense, and an expression as "<"(1) is now erronous.
nls(algorithm = "port") did not accept the [factor] notation. (PR#13650)
str() was incorrectly warning about its option component 'formatNum' set by strOptions().
besselI(x,.., expon.scaled=TRUE) now gives accurate results for x < 1e5 whereas it previous underflowed for x >~= 1500. Further, besselJ(x,..) also computes up to 1e5 (instead of 1e4).
formatC(mode = "character") was documented to work, but did not. (PR#13474)
dir() does a better job when dir is of rhe form "d:", the currrent directory is not the root on that drive, and either 'full' or 'recursive' is true.
Sys.setenv() and Sys.getenv() now use the Windows API functions rather than the buggy C runtime functions, allowing longer settings, e.g. for a long PATH.
pdf(colormodel = "gray") was setting the stroke colour for fills.
file.show() with multiple files would only show multiple copies of the first one. (PR#13469)
pdf(colormodel = "gray") was setting the stroke colour for fills,
R-Forge has been added to R_HOME/etc/repositories, so it will be available interactively in setRepositories().
R CMD check has a new argument '--install-args' to pass command-line arguments to INSTALL. E.g. --install-args="--docs=normal" on Windows if the HTML Help Workshop is not installed.
cbind() could crash with a zero-length input and a list result.
The fullrefman.{dvi,pdf} duplicated part I in part II (at least on some systems).
cbind() could crash with a zero-length input and a list result.
The fullrefman.{dvi,pdf} duplicated part I in part II (at least on some systems).
--with-ICU is now supported (and recommended) on Mac OS X using Apple's supplied port. Note however that the locale category LC_COLLATE cannot be changed whilst R is running on Apple's version of ICU.
Configure supports a wider range of ICU versions on other OSes: version 3.0 should suffice, and 3.2, 3.8 and 4.0 have been tested.
The fullrefman.{dvi,pdf} duplicated part I in part II.
Work around for a bug in some versions of iconv that was seen with output lines of more than 10,000 bytes and with an re-encoded ing requested on an output connection.
read.table(blank.lines.skip = FALSE) gave a final empty row on files with less than 5 lines (PR#13433).
Work around a bug in some versions of iconv that was seen with output lines of more than 10,000 bytes and with an re-encoded requested on an output connection.
The $<- method for pairlists (including language objects) failed to duplicate if NAMED was 2.
getwd() could segfault (PR#13424).
codoc() was missing some default value mismatches with unescaped backslashes, e.g. final="\\" needs to be written as final="\\\\" in the Rd file.
The reports on values now give strings in the original quoted format (with \ and " escaped).
R CMD check (via massage-eExamples.pl) now checks all examples with a 7 inch square device region on A4 paper, for locale-independence and to be similar to viewing examples on an on-screen device.
If a package declares an encoding in the DESCRIPTION file, the examples are assumed to be in that encoding when running the tests. (This avoids errors in running latin1 examples in a UTF-8 locale.)
.Call() and .External() were not accepting "NativeSymbolInfo" and "NativeSymbol" objects as claimed. (Patch from Olaf Mersmann.)
--with-ICU is now supported (and recommended) on Mac OS X using Apple's supplied port.
Configure supports a wider range of ICU versions on other OSes: version 3.0 should suffice, and 3.2, 3.8 and 4.0 have been tested.
Assigning an additional element to a pairlist/language element by x[["foo"]] <- value did not name the additional element.
grid-based plots no longer reset the base text size to the default 96dpi in cairo-based bitmap devices.
Rd conversion was incorrectly parsing \\\* and \\\{ (and other cases with an odd number of backslashes greater than one).
Text conversion of \code{\ etc} was incorrect (a single backslash stands for itself inside \code).
\code{} inside \examples{} is now fixed up (but the warning remains, since it will be handled incorrectly in earlier versions of R).
as.matrix.data.frame() could fail if coercion changed the dimension of one of the columns (as e.g. the coercion of a "Surv" object to a character vector does).
When extracting part of a complex list structure using [[]] with a vector index, the extracted part was not marked for duplication on change. (PR#13411)
Rd conversion to Sd and Ssgm is now deprecated as we no longer have any means to check the results (and Sd is long obsolete).
There was an obscure bug with srcrefs, which could put the parser into a condition giving "Error: bad value" on any input
Rd conversion to Sd and Ssgm is now deprecated as we no longer have any means to check the results (and Sd is long obsolete).
The attenmpt to make the 'Load' button in the GUI preferences start in the home directory failed if the latter was specified with forwward slashes, and reset the current search directory for other file open dialogs (e.g. for opening a script).
Rcmd INSTALL has a new option --pkglock to allow a per-package lock directory (useful for parallel installs).
qr.coef() failed in the complex case for non-square systems. (PR#13305)
plot.dendrogram(horizontal=TRUE) did not not plot 'edgetext' at the correct locations. (PR#13313)
The starting point for plot.acf(ci.type="ma") was lag 0 when it should have been lag 1. (PR#13071)
sum() now has a method for "difftime" objects (via the Summary
group).
max(), min() and range() applied to "difftime" object(s) now return a result in the common units of the objects, if there is one.
installed.packages() is now tolerant of malformed DESCRIPTION
files in installed packages (it ignores them, with a warning).
qt() now works for 0 < df < 1.
For consistency with matrix() and array(), dimnames(x) <-
list() removes the dimnames (as assigning NULL would do).
It was previously an error.
nlminb() copies names from 'start' to the parameter vector
used (for consistency with optim()).
legend() gains a 'title.col' argument: the title colour was
previously set from the first element of 'text.col' (which
remains the default).
In an Rd file, use of top-level \itemize{} inside a \value{}
block is unnecessary and almost always gave a faulty
conversion. Most cases are now detected and corrected, but
give a warning as such code will not work correctly in earlier
versins of R.
Also, use of \code{} inside a code block such as \examples{} will give a erroneous conversion that is now detected and warned against.
Autoflushing of stdout is turned on when Rd processing, so
warnings/error are likely to appear in the right place in
redirected output (such as that from R CMD check).
R_PDFLATEXCMD is added to the environment variables set by
'R CMD' and is used by R CMD Rd2dvi.
R_LATEXCMD, R_PDFLATEXCMD, R_MAKEINDEXCMD and R_DVIPSCMD default to 'latex', 'pdflatex', 'makeindex' and 'dvips' respectively if no suitable executable was found at configure time (since they might well be available at run time, particularly for binary installations of R). This affects R CMD Rd2dvi and help(offline=TRUE).
R CMD Rd2dvi now gives an explicit error message if latex (or pdflatex) fails.
R CMD Rd2dvi gains a --no-index argument: processing some special characters on PDF indices gave errors which used to be ignored.
R CMD INSTALL --with-package-versions is deprecated (and
support has always been incomplete on Windows).
So is install.packages(installWithVers = TRUE).
add1.glm() no longer warns if applied to a binomial glm with a
factor response.
aggregate.data.frame() now does something sensible with a
zero-column 'x' rather than failing with an obscure error
message. It gives an explicit error message if called with a
zero-row 'x'.
integrate() now accepts integer results from f(): as documented,
but only double was accepted.
contrib.url() produced an incorrect URL for the type
"mac.binary".
pairwise.wilcox.test() did not pass on the 'paired' argument
(caught by Matthias Kohl)
bmp(), jpeg(), and png() on unix with type="cairo" would segfault
on closure if the output file could not be opened.
tiff() on unix would not write the output file for the first page
when multiple pages were plotted.
str(1 + structure(1, class = "test")) no longer recurses indefinitely.
pf(x, .., ncp, lower.tail=FALSE, log=TRUE) is much more accurate
for large x now.
dev2bitmap() failed in 2.8.0 if 'taa' and 'gaa' were both NA.
Under rare circumstances equality tests for character strings
could fail to report equality in 2.8.0 in the same way as
2.7.2. (This needed a current encoding of Latin-1 or UTF-8,
one string whose encoding was marked as that encoding and one
that was marked as "unknown". In that circumstance the two
strings are not actually known to be equal, but earlier
versions of R assumed that "unknown" meant the current
encoding, and this is done once again.)
R CMD config could echo messages from GNU make if called from
within a Makefile (as e.g. package Rcpp does), especially from
within a parallel make run.
Rounding error could affect window(extend=TRUE) when applied
to monthly series. (PR#13272)
Offline help on a Unix-alike now works even if options
"latexcmd" and "dvipscmd" contain spaces
(e.g. "dvips -Pmy_printer").
Informative error messages are given if running latex or dvips fail.
Using plot.lm() on a "glm" object since 2.7.1 with which=5
caused the Pearson rather than deviance residuals to be used
in which=2 or 3 (including in the default case). (Thanks to
Effie Greathouse and Greg Snow.)
plot.lm() did not report on omitting observations with leverage one if they also had residual exactly zero. This was seen in example(occupationalStatus).
deparse(nlines=) no longer pads short results with blank
lines. (PR#13299)
legend(xpd=) now restores 'xpd' correctly. (PR#12756)
The "formula" method for lines() now works if 'subset' is
supplied and no 'data' argument (as that for points() did).
Sweave() now takes the defaults for the options 'pdf.version'
and 'pdf.encoding' of its RweaveLatex driver from pdf.options().
prettyNum(x, drop0trailing=TRUE) treated "1.1e20" as "1.1e2"
and hence str() did as well, in 2.8.0 only.
dchisq(x, df, ncp) no longer hangs for large x and ncp > 0,
and is more accurate in some cases (PR#13309).
installed.packages(lib.loc = D, priority="NA") now also works when
D contains a single package. (PR#13332)
legend(...., merge=TRUE) now warns and has no effect in the
case where no line segments are drawn. (PR#13340)
transform.data.frame() works better when two or more columns are
added.
Deparsing argument lists with non-syntactic names (e.g. that for
transform()) now uses backticks rather than double quotes to
produce syntactically valid output.
matrix() failed to check for 0-length 'dimnames': it now
treats them as NULL (as array did). (PR#13361)
0^NA is now NA, not Inf, consistent with x^NA, x != 1.
anova.mlm() did not work if T had only one row (including
e.g. the case M = ~1).
axis.POSIXct() mislabelled for some time ranges of a few hours
(reported by Martin Becker).
mantelhaen.test() with 'exact=FALSE' was not respecting
'alternative'. It now does one-sided tests similarly to
prop.test().
anova.mlm() had trouble with some designs where near-zero rows of
the tranformation matrix were not removed (caught by Nils Skutara).
Rd conversion was handling expressions like
'\item{foo}{see \eqn{x}}' (with one argument to \eqn
immediately followed by a right brace) incorrectly, sometimes
giving a spurious warning about 'missing text'.
R CMD INSTALL used the C locale to install the DESCRIPTION
file, and so escaped non-ASCII characters in packages with a
declared encoding of "latin1" or "UTF-8". (However, the
installed DESCRIPTION file was rarely used since the dumped
metadata are available.)
xspline() now respects inline par settings.
It and grid.xspline() now handle the special case of only two control points, and splines with control points that are located well outside the device (e.g., a zoomed view of a larger curve). (Both cases were giving the error "reached MAXNUMPTS").
In setClass("C", contains="list"); x <- new("C", 1:3), x[2:3] now
remains of class "C". So does rep(x, 2) or rep.int(x, 3).
median.default() now also works for "numeric"-like vectors.
The pdf() device can now handle the case where an image uses a
very large number of colours with different levels of
semi-transparency (alpha-values). It used to segfault.
(Also PR#13264)
window() failed to apply a fuzz to 'start' or 'end' and so
sometimes warned incorrectly for time series with 'freq' not a
power of two (e.g. 12 or 24).
unique.default() now preserves the "tzone" attribute on
"POSIXct" objects.
If all the packages had dependency lists of equal lengths,
occasionally install.packages() would compute an incorrect
sort order.
col(x, as.factor=TRUE) and row(x, as.factor=TRUE) would fail
if x had no column (row) names. It was documented
incorrectly, and now returns a matrix factor.
setRepositories() failed if "pkgType" was set to
"mac.binary.leopard".
sum() now has a method for "difftime" objects (via the Summary group).
max(), min() and range() applied to "difftime" object(s) now return a result in the common units of the objects, if there is one.
installed.packages() is now tolerant of malformed DESCRIPTION files in installed packages (it ignores them, with a warning).
qt() now works for 0 < df < 1.
For consistency with matrix() and array(), dimnames(x) <- list() removes the dimnames (as assigning NULL would do). It was previously an error.
nlminb() copies names from 'start' to the parameter vector used (for consistency with optim()).
legend() gains a 'title.col' argument: the title colour was previously set from the first element of 'text.col' (which remains the default).
In an Rd file, use of top-level \itemize{} inside a \value{} block is unnecessary and almost always gave a faulty conversion. Most cases are now detected and corrected, but give a warning as such code will not work correctly in earlier versins of R.
Also, use of \code{} inside a code block such as \examples{} will give a erroneous conversion that is now detected and warned against.
Autoflushing of stdout is turned on when Rd processing, so warnings/error are likely to appear in the right place in redirected output (such as that from R CMD check).
R_PDFLATEXCMD is added to the environment variables set by 'R CMD' and is used by R CMD Rd2dvi.
R_LATEXCMD, R_PDFLATEXCMD, R_MAKEINDEXCMD and R_DVIPSCMD default to 'latex', 'pdflatex', 'makeindex' and 'dvips' respectively if no suitable executable was found at configure time (since they might well be available at run time, particularly for binary installations of R). This affects R CMD Rd2dvi and help(offline=TRUE).
R CMD Rd2dvi now gives an explicit error message if latex (or pdflatex) fails.
R CMD Rd2dvi gains a --no-index argument: processing some special characters on PDF indices gave errors which used to be ignored.
R CMD INSTALL --with-package-versions is deprecated (and support has always been incomplete on Windows).
So is install.packages(installWithVers = TRUE).
add1.glm() no longer warns if applied to a binomial glm with a factor response.
aggregate.data.frame() now does something sensible with a zero-column 'x' rather than failing with an obscure error message. It gives an explicit error message if called with a zero-row 'x'.
integrate() now accepts integer results from f(): as documented, but only double was accepted.
contrib.url() produced an incorrect URL for the type "mac.binary".
pairwise.wilcox.test() did not pass on the 'paired' argument (caught by Matthias Kohl)
bmp(), jpeg(), and png() on unix with type="cairo" would segfault on closure if the output file could not be opened.
tiff() on unix would not write the output file for the first page when multiple pages were plotted.
str(1 + structure(1, class = "test")) no longer recurses indefinitely.
pf(x, .., ncp, lower.tail=FALSE, log=TRUE) is much more accurate for large x now.
dev2bitmap() failed in 2.8.0 if 'taa' and 'gaa' were both NA.
Under rare circumstances equality tests for character strings could fail to report equality in 2.8.0 in the same way as 2.7.2. (This needed a current encoding of Latin-1 or UTF-8, one string whose encoding was marked as that encoding and one that was marked as "unknown". In that circumstance the two strings are not actually known to be equal, but earlier versions of R assumed that "unknown" meant the current encoding, and this is done once again.)
R CMD config could echo messages from GNU make if called from within a Makefile (as e.g. package Rcpp did), especially from within a parallel make run.
Rounding error could affect window(extend=TRUE) when applied to monthly series. (PR#13272)
Offline help on a Unix-alike now works even if options "latexcmd" and "dvipscmd" contain spaces (e.g. "dvips -Pmy_printer").
Informative error messages are given if running latex or dvips fail.
Using plot.lm() on a "glm" object since 2.7.1 with which=5 caused the Pearson rather than deviance residuals to be used in which=2 or 3 (including in the default case). (Thanks to Effie Greathouse and Greg Snow.)
plot.lm() did not report on omitting observations with leverage one if they also had residual exactly zero. This was seen in example(occupationalStatus).
deparse(nlines=) no longer pads short results with blank lines. (PR#13299)
legend(xpd=) now restores 'xpd' correctly. (PR#12756)
The "formula" method for lines() now works if 'subset' is supplied and no 'data' argument (as that for points() did).
Sweave() now takes the defaults for the options 'pdf.version' and 'pdf.encoding' of its RweaveLatex driver from pdf.options().
prettyNum(x, drop0trailing=TRUE) treated "1.1e20" as "1.1e2" and hence str() did as well, in 2.8.0 only.
dchisq(x, df, ncp) no longer hangs for large x and ncp > 0, and is more accurate in some cases (PR#13309).
installed.packages(lib.loc = D, priority="NA") now also works when D contains a single package. (PR#13332)
legend(...., merge=TRUE) now warns and has no effect in the case where no line segments are drawn. (PR#13340)
transform.data.frame() works better when two or more columns are added.
Deparsing argument lists with non-syntactic names (e.g. that for transform()) now uses backticks rather than double quotes to produce syntactically valid output.
matrix() failed to check for 0-length 'dimnames': it now treats them as NULL (as array did). (PR#13361)
0^NA is now NA, not Inf, consistent with x^NA, x != 1.
anova.mlm() did not work if T had only one row (including e.g. the case M = ~1).
axis.POSIXct() mislabelled for some time ranges of a few hours (reported by Martin Becker).
mantelhaen.test() with 'exact=FALSE' was not respecting 'alternative'. It now does one-sided tests similarly to prop.test().
anova.mlm() had trouble with some designs where near-zero rows of the tranformation matrix were not removed (caught by Nils Skutara).
Rd conversion was handling expressions like '\item{foo}{see \eqn{x}}' (with one argument to \eqn immediately followed by a right brace) incorrectly, sometimes giving a spurious warning about 'missing text'.
R CMD INSTALL used the C locale to install the DESCRIPTION file, and so escaped non-ASCII characters in packages with a declared encoding of "latin1" or "UTF-8". (However, the installed DESCRIPTION file was rarely used since the dumped metadata are available.)
xspline() now respects inline par settings.
It and grid.xspline() now handle the special case of only two control points, and splines with control points that are located well outside the device (e.g., a zoomed view of a larger curve). (Both cases were giving the error "reached MAXNUMPTS").
In setClass("C", contains="list"); x <- new("C", 1:3), x[2:3] now remains of class "C". So does rep(x, 2) or rep.int(x, 3).
median.default() now also works for "numeric"-like vectors.
The pdf() device can now handle the case where an image uses a very large number of colours with different levels of semi-transparency (alpha-values). It used to segfault. (Also PR#13264.)
window() failed to apply a fuzz to 'start' or 'end' and so sometimes warned incorrectly for time series with 'freq' not a power of two (e.g. 12 or 24).
unique.default() now preserves the "tzone" attribute on "POSIXct" objects.
If all the packages had dependency lists of equal lengths, occasionally install.packages() would compute an incorrect sort order.
col(x, as.factor=TRUE) and row(x, as.factor=TRUE) would fail if x had no column (row) names. It was documented incorrectly, and now returns a matrix factor.
setRepositories() failed if "pkgType" was set to "mac.binary.leopard".
formals<-() changed the body of the function if this was a length-one list.
body<-() failed if the function had no arguments. It now warns if discarding elements from a 'value' of type "expression".
R_HOME/bin/helpPRINT.bat now contains an example of use with
MiKTeX to produce a PDF version of the help file.
The windows() device now works around the total clipping of
semi-transparent rectangles and circles that extend outside
the device region.
The script editor did not respect user preferences for the
background colour.
normalizePath() no longer returns a garbage string when the
input is bad; it now signals an error. (PR#13199)
File share/sh/dcf.sh was not distributed with the binary
build. (PR#13200)
dir.create() did not print the path correctly in warning messages.
The C-level function consolecmd had been broken in non-Latin-1
single-byte locales in R 2.8.0 by changes intended to support
the Japanese IME. This affected some menu items in Rgui
(e.g. to source R files with non-Latin-1 names) and submitting
commands from the script editor, but only in rarer encodings
such as Central European, Greek and Cyrillic. (PR#13195,
probably also PR#13120)
The attenpt to make the 'Load' button in the GUI preferences
start in the home directory failed if the latter was specified
with forwward slashes, and reset the current search directory
for other file open dialogs (e.g. for opening a script).
The installer would sometimes write the current version
information to the registry even if that option was not
checked.
Rcmd INSTALL --with-package-versions now works in a few more
cases (of lazy loading and lazy data), but still many of the
options are not supported (e.g. --use-zip). Versioned
installs are now deprecated, so regard them as unsupported on
Windows (and a warning is given). (PR#13284)
R_HOME/bin/helpPRINT.bat now contains an example of use with MiKTeX to produce a PDF version of the help file.
The windows() device now works around the total clipping of semi-transparent rectangles and circles that extend outside the device region.
The script editor did not respect user preferences for the background colour.
normalizePath() no longer returns a garbage string when the input is bad; it now signals an error. (PR#13199)
File share/sh/dcf.sh was not distributed with the binary build. (PR#13200)
dir.create() did not print the path correctly in warning messages.
The C-level function consolecmd had been broken in non-Latin-1 single-byte locales in R 2.8.0 by changes intended to support the Japanese IME. This affected some menu items in Rgui (e.g. to source R files with non-Latin-1 names) and submitting commands from the script editor, but only in rarer encodings such as Central European, Greek and Cyrillic. (PR#13195, probably also PR#13120)
The attenpt to make the 'Load' button in the GUI preferences start in the home directory failed if the latter was specified with forwward slashes, and reset the current search directory for other file open dialogs (e.g. for opening a script).
The installer would sometimes write the current version information to the registry even if that option was not checked.
Rcmd INSTALL --with-package-versions now works in a few more cases (of lazy loading and lazy data), but still many of the options are not supported (e.g. --use-zip). Versioned installs are now deprecated, so regard them as unsupported on Windows (and a warning is given). (PR#13284)
R_HOME/bin/helpPRINT.bat now contains an example of use with
MiKTeX to produce a PDF version of the help file.
The windows() device now works around the total clipping of
semi-transparent rectangles and circles that extend outside
the device region.
The script editor did not respect user preferences for the
background colour.
normalizePath() no longer returns a garbage string when the
input is bad; it now signals an error. (PR#13199)
File share/sh/dcf.sh was not distributed with the binary
build. (PR#13200)
dir.create() did not print the path correctly in warning messages.
The C-level function consolecmd had been broken in non-Latin-1
single-byte locales in R 2.8.0 by changes intended to support
the Japanese IME. This affected some menu items in Rgui
(e.g. to source R files with non-Latin-1 names) and submitting
commands from the script editor, but only in rarer encodings
such as Central European, Greek and Cyrillic. (PR#13195,
probably also PR#13120)
The attenpt to make the 'Load' button in the GUI preferences
start in the home directory failed if the latter was specified
with forwward slashes, and reset the current search directory
for other file open dialogs (e.g. for opening a script).
The installer would sometimes write the current version
information to the registry even if that option was not
checked.
Rcmd INSTALL --with-package-versions now works in a few more
cases (of lazy loading and lazy data), but still many of the
options are not supported (e.g. --use-zip). Versioned
installs are now deprecated, so regard them as unsupported on
Windows (and a warning is given). (PR#13284)
R_HOME/bin/helpPRINT.bat now contains an example of use with MiKTeX to produce a PDF version of the help file.
The windows() device now works around the total clipping of semi-transparent rectangles and circles that extend outside the device region.
The script editor did not respect user preferences for the background colour.
normalizePath() no longer returns a garbage string when the input is bad; it now signals an error. (PR#13199)
File share/sh/dcf.sh was not distributed with the binary build. (PR#13200)
dir.create() did not print the path correctly in warning messages.
The C-level function consolecmd had been broken in non-Latin-1 single-byte locales in R 2.8.0 by changes intended to support the Japanese IME. This affected some menu items in Rgui (e.g. to source R files with non-Latin-1 names) and submitting commands from the script editor, but only in rarer encodings such as Central European, Greek and Cyrillic. (PR#13195, probably also PR#13120)
The attenpt to make the 'Load' button in the GUI preferences start in the home directory failed if the latter was specified with forwward slashes, and reset the current search directory for other file open dialogs (e.g. for opening a script).
The installer would sometimes write the current version information to the registry even if that option was not checked.
Rcmd INSTALL --with-package-versions now works in a few more cases (of lazy loading and lazy data), but still many of the options are not supported (e.g. --use-zip). Versioned installs are now deprecated, so regard them as unsupported on Windows (and a warning is given). (PR#13284)
col(x, as.factor=TRUE) and row(x, as.factor=TRUE) would fail if x had no column (row) names. It was documented incorrectly, and now returns a matrix factor.
setRepositories() failed if "pkgType" was set to "mac.binary.leopard".
The pdf() device can now handle the case where an image uses a very large number of colours with different levels of semi-transparency (alpha-values). It used to segfault. (Also PR#13264)
If all the packages had dependency lists of equal lengths, occasionally install.packages() would compute an incorrect sort order.
In an Rd file, use of top-level \itemize{} inside a \value{} block is incorrectunnecessary and almost always gave a faulty conversion, silently. It is. Most cases are now detected and corrected, but gives a warning as such code will not work correctly in earlier versins of R.
Also, use of \code{} inside a code block such as \examples{} iswill give an errorneous conversion that is now detected and warned against.
R CMD build now also uses a Makevars file for cleaning up src/.
In setClass("C", contains="list"); x <- new("C", 1:3), x[2:3] now remains of class "C". So does rep(x, 2) or rep.int(x, 3).
unique.default() now preserves the "tzone" attribute on "POSIXct" objects.
If all the packages had dependency list of equal lengths, occasionally install.packages() would compute an incorrect sort order.
The pdf() device can now handle the case where an image uses a very large number of colours with different levels of semi-transparency (alpha-values). It used to segfault.
window() failed to apply a fuzz to 'start' or 'end' and so sometimes warned incorrectly for time series with 'freq' not a power of two (e.g. 12 or 24).
In an Rd file, use of top-level \itemize{} inside a \value{} block is incorrect and almost always gave a faulty conversion, silently. It is now detected and gives a warning.
Also, use of \code{} inside a code block such as \examples{} is an error that is now detected and warned against.
Autoflushing of stdout is turned on when Rd processing, so warnings/error are likely to appear in the right place in redirected output (such as that from R CMD check).
median.default() now also works for "numeric"-like vectors.
anova.mlm() had trouble with some designs where near-zero rows of the tranformation matrix were not removed (caught by Nils Skutara).
xspline() now respects inline par settings.
It and grid.xspline() now handle the special case of only two control points, and splines with control points that are located well outside the device (e.g., a zoomed view of a larger curve). (Both cases were giving the error "reached MAXNUMPTS").
legend() gains a 'title.col' argument: the title colour was previously set from the first element of 'text.col' (which remains the default).
xspline() now respects inline par settings.
Rd conversion was handling expressions like '\item{foo}{see \eqn{x}}' (with one argument to \eqn immediately followed by a right brace) incorrectly, sometimes giving a spurious warning about 'missing text'.
R CMD INSTALL used the C locale to install the DESCRIPTION file, and so escaped non-ASCII characters in packages with a declared encoding of "latin1" or "UTF-8". (However, the installed DESCRIPTION file was rarely used since the dumped metadata are available.)
nlminb() copies names from 'start' to the parameter vector used (for consistency with optim()).
anova.mlm() had trouble with some designs where near-zero rows of the tranformation matrix were not removed (caught by Nils Skutara).
axis.POSIXct() mislabelled for some time ranges of a few hours (reported by Martin Becker).
mantelhaen.test() with 'exact=FALSE' was not respecting 'alternative'. It now does one-sided tests similarly to prop.test().
0^NA is now NA, not Inf, consistent with x^NA, x != 1.
For consistency with matrix() and array(), dimnames(x) <- list() removes the dimnames (as assigning NULL would do). It was previously an error.
0^NA is now NA, not Inf, consistent with x^NA, x!=1.
anova.mlm() did not work if T had only one row (including e.g. the case M = ~1).
prettyNum(x, drop0trailing=TRUE) wrongly treated "1.1e20" as "1.1e2" and hence str() did as well, in 2.8.0 only.
installed.packages(lib.loc = D, priority="NA") now also works when D contains onea single package only. (PR#13332)
matrix() failed to check for 0-length 'dimnames': it now treats them as NULL (as array did). (PR#13361)
transform.data.frame() works better when two or more columns are added.
Deparsing argument lists with non-syntactic names (e.g. that for transform()) now uses backticks rather than double quotes to produce syntactically valid output.
matrix() failed to check for 0-length 'dimnames'. (PR#13361)
legend(...., merge=TRUE) now warns and has no effect in the case where no line segments are drawn. (PR#13340)
installed.packages(lib.loc = D, priority="NA") now also works when D contains one single package only. (PR#13332)
dchisq(x, df, ncp) now longer handgs for large x and ncp > 0, and is more accurate in some cases (PR#13309).
dchisq(x, df, ncp) now longer hands for large x and ncp > 0, and is more accurate in some cases (PR#13309).
legend(xpd=) now restores 'xpd' correctly. (PR#12756)
The "formula" method for lines() now works if 'subset' is supplied and no 'data' argument (as that for points() did).
Sweave() now takes the defaults for the options 'pdf.version' and 'pdf.encoding' of its RweaveLatex driver from pdf.options().
prettyNum(x, drop0trailing=TRUE) wrongly treated "1.1e20" and hence str() did as well, in 2.8.0 only.
R CMD INSTALL --with-package-versions is deprecated (and support has always been incomplete on Windows).
So is install.packages(installWithVers = TRUE).
deparse(nlines=) no longer pads short results with blank lines. (PR#13299)
R_PDFLATEXCMD is added to the environment variables set by 'R CMD' and is used by R CMD Rd2dvi.
R_LATEXCMD, R_PDFLATEXCMD, R_MAKEINDEXCMD and R_DVIPSCMD default to 'latex', 'pdflatex', 'makeindex' and 'dvips' respectively if no suitable executable was found at configure time (since they might well be available at run time, particularly for binary installations of R). This affects R CMD Rd2dvi and help(offline=TRUE).
R CMD Rd2dvi now gives an explicit error message if latex (or pdflatex) fails.
R CMD Rd2dvi gains a --no-index argument: processing some special characters on PDF indices gave errors which used to be ignored.
R_PDFLATEXCMD is added to the environment variables set by 'R CMD' and is used by R CMD Rd2dvi.
R_LATEXCMD, R_PDFLATEXCMD, R_MAKEINDEXCMD and R_DVIPSCMD default to 'latex', 'pdflatex', 'makeindex' and 'dvips' respectively if no suitable executable was found at configure time (since they might well be available at run time, particularly for binary installations of R). This affects R CMD Rd2dvi and help(offline=TRUE).
R CMD Rd2dvi now gives an explicit error message if latex (or pdflatex) fails.
R CMD Rd2dvi gains a --no-index argument: processing some special characters on PDF indices gave errors which used to be ignored.
Rcmd INSTALL --with-package-versions now works in a few more cases (of lazy loading and lazy data), but still many of the options are not supported (e.g. --use-zip). Versioned installs are now deprecated, so regard them as unsupported on Windows (and a warning is given). (PR#13284)
R CMD INSTALL --with-package-versions is deprecated (and support has always been incomplete on Windows).
Using plot.lm() on a "glm" object since 2.7.1 with which=5 caused the Pearson rather than deviance residuals to be used in which=2 or 3 (including in the default case). (Thanks to Effie Greathouse and Greg Snow.)
plot.lm() did not report on omitting observations with leverage one if they also had residual exactly zero. This was seen in example(occupationalStatus).
Using plot.lm() on a "glm" object since 2.7.1 with which=5 caused the Pearson rather than deviance residuals to be used in which=2 or 3 (including in the default case).
R_PDFLATEXCMD is added to the environment variables set by 'R CMD' and is used by R CMD Rd2dvi.
R _LATEXCMD, R_PDFLATEXCMD, Rd2dvi now gives an explicit error message if latex (or pdflatex) is not available_MAKEINDEXCMD and R_DVIPSCMD default to 'latex', 'pdflatex', 'makeindex' and 'dvips' respectively if no suitable executable was found at configure time (since they might well be available at run time, particularly for binary installations of R). This affects R CMD Rd2dvi and help(offline=TRUE).
R CMD Rd2dvi now gives an explicit error message if latex (or pdflatex) fails.
Offline help on a Unix-alike now works even if options "latexcmd" and "dvipscmd" contain spaces (e.g. "dvips -Pmy_printer").
Informative error messages are given if running latex or dvips fail.
R_HOME/bin/helpPRINT.bat now contains an example of use with MiKTeX to produce a PDF version of the help file.
The C-level function consolecmd had been broken in non-Latin-1 single-byte locales in R 2.8.0 by changes intended to support the Japanese IME. This affected some menu items in Rgui (e.g. to source R files with non-Latin-1 names) and submitting commands from the script editor, but only in rarer languageencodings such as Central European, Greek and Cyrillic. (PR#13195, probably also PR#13120)
Offline help on a Unix-alike now works even if options "latexcmd" and "dvipscmd" contain spaces (e.g. "dvips -Pmy_printer").
Rounding error could affect window(extend=TRUE) when applied to monthly series. (PR#13272)
R_PDFLATEXCMD is added to the environment variables set by 'R CMD' and is used by R CMD Rd2dvi.
R CMD Rd2dvi now gives an explicit error message if latex (or pdflatex) is not available.
R CMD config could echo messages from GNU make if called from within a Makefile (as e.g. package Rcpp does), especially from within a parallel make run.
Runding error could affect window(extend=TRUE) when applied to monthly series. (PR#13272)
The installer would sometimes write the current version information to the registry even if that option was not checked.
qt() now works for 0 < df < 1.
qt() now works for 0 < df < 1.
integrate() now accepts integer results from f(): as documented, but only double was accepted.
contrib.url() produced an incorrect URL for the type "mac.binary".
str(1 + structure(1, class = "test")) no longer recurses "indefinitely".
Under some very rare circumstances equality tests for character strings could fail to detecreport equality in 2.8.0 in the same way as 2.7.2. (This needed to have aa current encoding of Latin-1 or UTF-8, one string whose encodeding was marked correctlyas that encoding and one that was marked as "unknown" but was actually in a known encoding. In that circumstance the two strings are not actually known to be equal, but earlier versions of R assumed that "unknown" meant the current encoding, and this is done once again.)
Under some very rare circumstances equality tests for character strings could fail to detect equality in 2.8.0. (This needed to have a string whose encoded was marked correctly and one that was marked as "unknown" but was actually in a known encoding.)
The attenpt to make the 'Load' button in the GUI preferences start in the home directory failed if the latter was specified with forwward slashes, and reset the current search directory for other file open dialogs (e.g. for opening a script).
The C-level function consolecmd had been broken in non-Latin-1 single-byte locales in R 2.8.0 by changes intended to support the Japanese IME. This affected some menu items in Rgui (e.g. to source R files with non-Latin-1 names) and submitting commands from the script editor, but only in rarer languages such as Central European, Greek and Cyrillic. (PR#13195, probably also PR#13120)
dev2bitmap() failed in 2.8.0 if 'taa' and 'gaa' were both NA.
pf(x, .., ncp, lower.tail=FALSE, log=TRUE) is much more accurate for large x now.
str(1 + structure(1, class = "test")) no longer recurses "infinitely".
bmp(), jpeg(), and png() on unix with type="cairo" would segfault on closure if the output file could not be opened.
tiff() on unix would not write the output file for the first page when multiple pages were plotted.
dir.create() did not print the path correctly in warning messages.
pairwise.wilcox.test() did not pass on the 'paired' argument (caught by Matthias Kohl)
contrib.url() produced incorrect URL for the type "mac.binary".
File share/sh/dcf.sh was not distributed with the binary build. (PR#13200)
normalizePath() no longer returns a garbage string when the input is bad; it now signals an error. (PR#13199)
contrib.url() produced incorrect URL for the type "mac.binary".
The script editor did not respect user preferences for the background colour.
Input from the Rgui console was changing the letter 255 (ÿ in Latin-2) in the character set to letter 1.
The windows() device now works around the total clipping of semi-transparent rectangles and circles that extend outside the device region.
sum() now has a method for "difftime" objects (via the Summary group).
max(), min() and range() applied to "difftime" object(s) now return a result in the common units of the objects, if there is one.
installed.packages() is now tolerant of malformed DESCRIPTION files in installed packages (it ignores them, with a warning).
R CMD build now also uses a Makevars file for cleaning up src/.
add1.glm() no longer warns if applied to a binomial glm with a factor response.
aggregate.data.frame() now does something sensible with a zero-column 'x' rather than failing with an obscure error message. It gives an explicit error message if called with a zero-row 'x'.
qt() now works for 0 < df < 1.
integrate() now accepts integer results from f(): as documented, but only double was accepted.
save() (optionally, but by default) checks for the existence of objects before opening the file/connections (wish of PR#12543).
str()'s default method gains a 'formatNum' function argument which is used for formatting numeric vectors. Note that this is very slightly not backward compatible, and that its default may change before release.
update.packages() gains an argument 'oldPkgs', where new.packages() and old.packages() get 'instPkgs'. These allow to consideration of only subsets of packages instead of all installed ones.
The default "pkgType" option for non-CRAN builds of R on Mac OS X is now correctly "source" as documented.
sum() now has a method for "difftime" objects (via the Summary group).
max(), min() and range() applied to "difftime" object(s) now return a result in the common units of the objects, if there is one.
installed.packages() is now tolerant of malformed DESCRIPTION files in installed packages (it ignores them, with a warning).
R CMD build now also uses a Makevars file for cleaning up src/.
add1.glm() no longer warns if applied to a binomial glm with a factor response.
aggregate.data.frame() now does something sensible with a zero-column 'x' rather than failing with an obscure error message. It gives an explicit error message if called with a zero-row 'x'.
qt() now works for 0 < df < 1.
integrate() now accepts integer results from f(): as documented, but only double was accepted.
save() (optionally, but by default) checks for the existence of objects before opening the file/connections (wish of PR#12543).
str()'s default method gains a 'formatNum' function argument which is used for formatting numeric vectors. Note that this is very slightly not backward compatible, and that its default may change before release.
update.packages() gains an argument 'oldPkgs', where new.packages() and old.packages() get 'instPkgs'. These allow to consideration of only subsets of packages instead of all installed ones.
The default "pkgType" option for non-CRAN builds of R on Mac OS X is now correctly "source" as documented.
The windows() device now works around the total clipping of semi-transparent rectangles and circles that extend outside the device region.
cut.Date(x, "weeks") could fail if x has only one unique value which fell on a week boundary. (PR#13159)
R CMD Rd2dvi and R CMD check are now able to cope with Cyrillic
characters in UTF-8 (thanks to a hint from Alexey Shipunov).
R CMD Rd2dvi and R CMD check are now able to cope with Cyrillic characters in UTF-8 (thanks to a hint from Alexey Shipunov).
PROTECT and UNPROTECT macros now work even with R_NO_REMAP.
splinefun() with natural splines incorrectly evaluated derivatives to the left of the first knot. (PR#13132, fix thanks to Berwin Turlach)
anova(glm(..., y=FALSE)) now works. (PR#13098)
savePlot() expected 'filename' in the native encoding.
PCRE has been updated to version 7.8 (mainly bug fixes).
plot.ecdf() now defaults to pch=169 so as to better convey the left-closed line segments.
PCRE has been updated to version 7.8 (mainly bug fixes)
plot.ecdf() now defaults to pch=16 so as to better convey the left-closed line segments.
The default pkgType option for non-CRAN builds of R on Mac OS X is now correctly "source" as documented.
The default R_LIBS_USER path in AQUA builds now matches the Mac-specifc path used by the Mac GUI: ~/Library/R/x.y/library
as.list() applied to an environment now forces promises and returns values.
Promises capturing calls to sys.parent() and friends did not work properly when evaluated via method dispatch for internal S3 generics.
S3 classes that are registered by a call to setOldClass() now have the S3 class as a special slot, and therefore so do any S4 classes that contain them. This mechanism is used to support S4 classes that extend S3 classes, to the extent possible. See ?Classes, ?setOldClass, and ?S3Class.
The treatment of special pseudo-classes "matrix", "array", and "ts" as S4 classes has also been modified to be more consistent and, within limitations imposed by special treatment of these objects in the base code, to allow other classes to contain them. See class?ts.
A general feature added to implement "ts" and also "data.frame" as S4 classes is that an S4 class definition can be supplied to setOldClass() when the S3 class has known attributes of known class.
setOldClass() now saves all the S3 inheritance, allowing the calls to be built up in stages, rather than including all the S3 classes in each call. Also allows as(x,"S3") to generate valid S3 inheritance from the stored definition. See ?S3.
S4 methods may now be defined corresponding to "...", by creating a generic function that has "..." as its signature. A method will be selected and called if all the arguments matching "..." are from this class or a subclass. See ?dotsMethods.
New functions S3Part() and S3Class() provide access to the corresponding S3 object and class for S4 classes that extend either an S3 class or a basic R object type.
show(<class definition>) now also shows the class name.
var(), cov(), cor(), sd() etc now by default (when 'use' is not specified) return NA in many cases where they signalled an error before.
S3 classes that are registered by a call to setOldClass() now
have the S3 class as a special slot, and therefore so do
any S4 classes that contain them. This mechanism is used to
support S4 classes that extend S3 classes, to the extent
possible. See ?Classes, ?setOldClass, and ?S3Class.
The treatment of special pseudo-classes "matrix", "array", and "ts" as S4 classes has also been modified to be more consistent and, within limitations imposed by special treatment of these objects in the base code, to allow other classes to contain them. See class?ts.
A general feature added to implement "ts" and also "data.frame" as S4 classes is that an S4 class definition can be supplied to setOldClass() when the S3 class has known attributes of known class.
setOldClass() now saves all the S3 inheritance, allowing the calls to be built up in stages, rather than including all the S3 classes in each call. Also allows as(x,"S3") to generate valid S3 inheritance from the stored definition. See ?S3.
S4 methods may now be defined corresponding to "...", by
creating a generic function that has "..." as its signature.
A method will be selected and called if all the arguments
matching "..." are from this class or a subclass. See ?dotsMethods.
show(<class definition>) now also shows the class name.
Different viewers were rendering consecutive text() calls on a
pdf() device in different ways where translucency was
involved. The PDF generated has been changed to force each
call to be rendered separately (which is the way xpdf or
ghostscript was rendering, but Acrobat was forming a
transparency group), which is consistent with other graphics
devices supporting semi-transparency.
New functions S3Part() and S3Class() provide access to the
corresponding S3 object and class for S4 classes that extend
either an S3 class or a basic R object type.
PROTECT and UNPROTECT macros now work even with R_NO_REMAP
quantile.default() allows 'probs' to stray just beyond [0, 1], to allow for computed values.
Experimental setTimeLimit() function to set limits on the CPU and/or elapsed time for each top-level computation, and setSessionLimit() to set limits for the rest of the session.
pdf() has new arguments 'useDingbats' (set this to FALSE for use with broken viewers) and 'colormodel'. It now only references the ZapfDingbats font if it is used (for small opaque circles).
The default PDF version is now 1.4, since viewers that do not accept that are now rare.
Different viewers were rendering consecutive text() calls on a pdf() device in different ways where translucency was involved. The PDF generated has been changed to force each call to be rendered separately (which is the way xpdf or ghostscript was rendering, but Acrobat was forming a transparency group), which is consistent with other graphics devices supporting semi-transparency.
abbreviate() gains an optional argument 'strict' allowing cheap and fast strict abbrevation.
rug() now uses axis()'s new arguments in 2.7.2 are now used by rug(), whichfrom 2.7.2, hence no longer draws an axis line.
system.time() now uses lazy evaluation rather than eval/substitute, which results in more natural scoping. (PR#11169)
Sweave() now writes concordance information inside a \Sconcordance LaTeX macro, which allows it to be inserted into PDF output.
It is now possible to create and open a text-mode gzfile() connection by explicitly using e.g. open="rt".
nNew help.request() function for compiling an e-mail to R-help according to "the rules". It is built on the new utility, create.post() on which also bug.report() is based now; both thanks to a contribution by Heather Turner.
methods::allGenerics(), getMethodsMetaData() are is deprecated.
PROTECT and UNPROTECT macros now work even with R_NO_REMAP
pdf(family="Japan") [and other CIDfonts] no longer seg.faults when writing "western" text strings.
Promises capturing calls to sys.parent and friends did not work properly when evaluated via method dispatch for internal S3 generics.
as.list applied to an environment now forces promises and returns values.
new help.request() function for compiling an e-mail to R-help according to "the rules". It is built on the new utility, create.post() on which also bug.report() is based now; both thanks to a contribution by Heather Turner.
update.packages() gains an argument 'oldPkgs', where new.packages() and old.packages() get 'instPkgs'. These allow to consider only subsets of packages instead of all installed ones.
PROTECT and UNPROTECT macros now work even with R_NO_REMAP
RSiteSearch() encodes its query (it seems this is occasionally needed toon some platforms, but encoding other fields is harmful).
RSiteSearch() encodes its query (it seems this is occasionally needed toon some platforms, but encoding other fields is harmful).
The custom install options were not saved/restored when the installer was run with /SAVEINF or /LOADINF respectively.