This blog is updated daily.
A general description is here.
The windows() device would sometimes ignore font family requests (PR#12931).
The clip region was sometimes wrong when printing from the menu on a windows() graphics device (in 2.7.2 only).
dir.create(recursive = TRUE) was not working on //server/share paths.
iconv() was incorrectly identifying R running in an Eastern European locale as using ISO-8859-2 (aka Latin-2) rather than CP1250: they differ in the positions of some characters, notably s and z with caron. This was seen in tcltk output from Rcmdr in 2.7.x, but might have occurred elsewhere (and earlier).
This also affected localeToCharset() which incorrectly returned "ISO8859-2".
The same issue seems to have caused problems with starting R 2.7.x in the Chinese (Hong Kong S.A.R.) locale on some systems (e.g. PR#12658).
iconv() was incorrectly identifying R running in an Eastern European locale as using ISO-8859-2 (aka Latin-2) rather than CP1250: they differ in the positions of some characters, notably s and z with caron. This was seen in tcltk output from Rcmdr in 2.7.x, but might have occurred elsewhere (and earlier).
This also affected localeToCharset() which incorrectly returned "ISO8859-2".
The same issue seems to have caused problems with starting R 2.7.x in the Chinese (Hong Kong S.A.R.) locale on some systems (e.g. PR#12658).
quartz() would segfault if asked to create a file for bitmap output which could not be created. This applied also to the type="quartz" versions of bmp(), jpeg(), png() and tiff().
dnbinom(0, size, mu = <large>) suffered from cancellation in 2.7.2 only.
seek() now clears the pushback on a text-mode connection if used to set a new position. (PR#12640)
source() did not respect the setting of options("keep.source") when setting source references.
Attempting to open an X11() device on a non-existent display when one is already open on another display now gives a warning rather than terminating R via a fatal X11 error. (PR#12628)
within(<dataframe>, { ... }) now also works when '...' removes more than one column.
data.frame(row.names=NULL) once again behaves differently from the default (as documented).
plot(isoreg(x,y)) now plots the points correctly, also when 'x' is not sorted.
duplicated() and unique() now handle 'incomparables' better, and avoid occasional segfaults (PR#12551).
The use of multiple packages in 'LinkingTo' works again, and now works when the dependent packages are in the libraries loaded by R but noty to be installed to (but not in the library path seen by R --vanilla).
sprintf() returns elements of the result in UTF-8 when the
format or any character input has a corresponding element
declared as UTF-8. Similarly for paste(), elements of the
result are in UTF-8 when any input to that element is declared
as UTF-8.
axis() has new arguments 'col.ticks' and 'lwd.ticks' to allow
the colour and line width of ticks to be set separately from
that of the line (e.g. to set one or the other to transparent
or zero width).
legend() has a new argument 'box.col' to set the colour of the
enclosing box.
legend() gains a 'xpd' argument to make it easier to place a
legend in the margins or outer margins.
stripchart() now passes '...' to title() (as well as to
plot.default() and axis()). (Wish of PR#12202)
help.search() has to new argument 'searchEngine' to go
directly to the search form: this is needed by users of
Firefox 3 to workaround a bug in interpreting the search
results pages.
Plotmath computed the glyph metrics for the wrong character (and
perhaps for a non-existent one) if this was a single-byte
character with the top bit set. An example was symbol("\300").
sink() and cat() could divert output to a non-writable connection.
phyper(x, 0,0,0) no longer hangs for huge x and gives 1 for x >= 0.
(PR#11813)
plnorm(x, ..., log.p=TRUE) is now correct for x <= 0. (PR#11867)
<data.frame>[, ch] gives an error (again!) when ch is a string not
exactly matching the column names, thanks to an oral bug report by
Matthew Dowle.
data.frame(x=1:2, y=3:4, row.names=c("a","NA"))[c(2,NA),] has
correct row names c("NA,"NA.1") again.
The GUI data editor for dataframes did not handle escape
characters in entries properly. (PR#11897)
PCRE has been updated to 7.7 (bugfix release).
package.skeleton() wrongly warned about invalid code_files names
when these were not in the current directory.
shapiro.test(c(0,0,1)) now has P value >= 0 (instead of barely
negative).
assign() now warns if given a character vector of length > 1,
rather than silently taking the first element.
rcond(<exactly singular matrix>) now gives 0 instead of an error.
There was a memory leak in C function ucstoutf8 used by some
graphics devices.
Plots of profile.mle() objects (package 'stats4') were
misbehaving when the 'which' argument had been used in their
calculation.
dnbinom(x, size, mu=*, ..) is now more accurate for very large
'size'. The same applies to pnbinom() and rnbinom().
axis() was ignoring par() mgp[3] if mgp was set in-line.
Closing an X11 View() or dataentry window via its frame's
close control now works better on some window managers.
Calling lapply() was not handling method dispatch correctly for
is.numeric(), is.matrix(), is.array(), log() and the Math2
group. This affected data.matrix() which incorrectly regarded
"Date" and "POSIXct" objects as numeric, and has been adjusted
to do so as exceptions.
package.skeleton() was not looking for non-function objects in
its 'environment' argument.
nls() was only finding its 'weights' argument in the case when
all the variables in the formula were of the same length and
hence that model.frame() could be used.
It was silently ignoring 'subset' and 'na.action' except in that case. Now they are ignored only if 'data' is a list and variables taken from 'data' are not all of the same length, in which case a warning is given.
The 'mle' confint() method now takes 'level' into account when
setting 'alpha' for the profile.
within() was not handling correctly expressions that produced
NULL columns. (PR#11131)
dev.print() and dev.copy2{eps,pdf}() now ensure that the current
device is restored as the active device even if an error
occurs. (PR#9801)
as.Date() could fail to convert character strings representing
days on which midnight did not exist in the current timezone
(as happened in parts of Africa on 1960-01-01).
The automatic placement of legend() with 'title' and a
reversed 'x' axis was incorrect. (PR#12019)
The use of multiple packages in 'LinkingTo' works again, and
now works when the dependent packages are in libraries loaded
by R but not by R --vanilla.
bxp() (and hence boxplot) now respects in-line graphical
parameters 'xaxp'/'yaxp' as appropriate. (PR#11463)
barplot(log = "y") failed if there were NAs in the 'height'
argument. (PR#11585)
pbeta() is more accurate in some cases with extreme values of
'ncp'. (PR#11277).
edit.data.frame() no longer fails if called on a 0-column
data frame and no column is created.
pchisq(x, df=0) was always one even for x < 0; similarly for
pgamma(x, alpha=0).
add1() and drop1() now return a P-value of NaN in cases with
df=0 for test="Chisq" (they gave NaN until pchisq was altered
in R 2.6.2).
The default methods of drop1() and add1() now re-evaluate in the
object's formula environment, rather than simply in the parent
(informal bug report by Werner Stahel).
The undocumented limit of 8191 bytes on comments (from # to
the end of the line) in R code has been removed.
qgamma() warns if used with shape < 1e-10, when it may be
unreliable. (PR#12324)
Installing a source package was not using the package's declared
encoding (if any) as a default encoding for the help.search()
database in Meta/hsearch.rds. This could cause packages with
a default encoding to have some of their entries rejected by
help.search() in a multi-byte locale (such as a UTF-8 locale).
sprintf() returns elements of the result in UTF-8 when the format or any character input has a corresponding element declared as UTF-8. Similarly for paste(), elements of the result are in UTF-8 when any input to that element is declared as UTF-8.
axis() has new arguments 'col.ticks' and 'lwd.ticks' to allow the colour and line width of ticks to be set separately from that of the line (e.g. to set one or the other to transparent or zero width).
legend() has a new argument 'box.col' to set the colour of the enclosing box.
legend() gains a 'xpd' argument to make it easier to place a legend in the margins or outer margins.
stripchart() now passes '...' to title() (as well as to plot.default() and axis()). (Wish of PR#12202)
help.search() has new argument 'searchEngine' to go directly to the search form: this is needed by users of Firefox 3 to workaround a bug in interpreting the search results pages.
Plotmath computed the glyph metrics for the wrong character (and perhaps for a non-existent one) if this was a single-byte character with the top bit set. An example was symbol("\300").
sink() and cat() could divert output to a non-writable connection.
phyper(x, 0,0,0) no longer hangs for huge x and gives 1 for x >= 0. (PR#11813)
plnorm(x, ..., log.p=TRUE) is now correct for x <= 0. (PR#11867)
<data.frame>[, ch] gives an error (again!) when ch is a string not exactly matching the column names, thanks to an oral bug report by Matthew Dowle.
data.frame(x=1:2, y=3:4, row.names=c("a","NA"))[c(2,NA),] has correct row names c("NA,"NA.1") again.
The GUI data editor for dataframes did not handle escape characters in entries properly. (PR#11897)
PCRE has been updated to 7.7 (bugfix release).
package.skeleton() wrongly warned about invalid code_files names when these were not in the current directory.
shapiro.test(c(0,0,1)) now has P value >= 0 (instead of barely negative).
assign() now warns if given a character vector of length > 1, rather than silently taking the first element.
rcond(<exactly singular matrix>) now gives 0 instead of an error.
There was a memory leak in C function ucstoutf8 used by some graphics devices.
Plots of profile.mle() objects (package 'stats4') were misbehaving when the 'which' argument had been used in their calculation.
dnbinom(x, size, mu=*, ..) is now more accurate for very large 'size'. The same applies to pnbinom() and rnbinom().
axis() was ignoring par() mgp[3] if mgp was set in-line.
Closing an X11 View() or dataentry window via its frame's close control now works better on some window managers.
Calling lapply() was not handling method dispatch correctly for is.numeric(), is.matrix(), is.array(), log() and the Math2 group. This affected data.matrix() which incorrectly regarded "Date" and "POSIXct" objects as numeric, and has been adjusted to do so as exceptions.
package.skeleton() was not looking for non-function objects in its 'environment' argument.
nls() was only finding its 'weights' argument in the case when all the variables in the formula were of the same length and hence that model.frame() could be used.
It was silently ignoring 'subset' and 'na.action' except in that case. Now they are ignored only if 'data' is a list and variables taken from 'data' are not all of the same length, in which case a warning is given.
The 'mle' confint() method now takes 'level' into account when setting 'alpha' for the profile.
within() was not handling correctly expressions that produced NULL columns. (PR#11131)
dev.print() and dev.copy2{eps,pdf}() now ensure that the current device is restored as the active device even if an error occurs. (PR#9801)
as.Date() could fail to convert character strings representing days on which midnight did not exist in the current timezone (as happened in parts of Africa on 1960-01-01).
The automatic placement of legend() with 'title' and a reversed 'x' axis was incorrect. (PR#12019)
The use of multiple packages in 'LinkingTo' works again, and now works when the dependent packages are in libraries loaded by R but not by R --vanilla.
bxp() (and hence boxplot) now respects in-line graphical parameters 'xaxp'/'yaxp' as appropriate. (PR#11463)
barplot(log = "y") failed if there were NAs in the 'height' argument. (PR#11585)
pbeta() is more accurate in some cases with extreme values of 'ncp'. (PR#11277).
edit.data.frame() no longer fails if called on a 0-column data frame and no column is created.
pchisq(x, df=0) was always one even for x < 0; similarly for pgamma(x, alpha=0).
add1() and drop1() now return a P-value of NaN in cases with df=0 for test="Chisq" (they gave NaN until pchisq was altered in R 2.6.2).
The default methods of drop1() and add1() now re-evaluate in the object's formula environment, rather than simply in the parent (informal bug report by Werner Stahel).
The undocumented limit of 8191 bytes on comments (from # to the end of the line) in R code has been removed.
qgamma() warns if used with shape < 1e-10, when it may be unreliable. (PR#12324)
Installing a source package was not using the package's declared encoding (if any) as a default encoding for the help.search() database in Meta/hsearch.rds. This could cause packages with a default encoding to have some of their entries rejected by help.search() in a multi-byte locale (such as a UTF-8 locale).
Rgui has a new menu item 'Html search page' on the Help menu, which goes directly to the HTML search form. This is needed by users of Firefox 3, which generates incorrect links in search results when the page is accessed via the 'Html help' menu item (or via help.start()).
help.search() has to new argument 'searchEngine' to go directly to the search form: this is needed by users of Firefox 3 to workaround a bug in interpreting the search results pages.
qgamma() warns if used with shape < 1e-10, when it may be unreliable. (PR#12324)
Installing a source package was not using the package's declared encoding (if any) as a default encoding for the help.search() database in Meta/hsearch.rds. This could cause packages with a default encoding to have some of their entries rejected by help.search() in a multi-byte locale (such as a UTF-8 locale).
pbeta() is more accurate in some cases with extreme values of 'ncp'. (PR#11277).
Saving a graph in TIFF format could crash R (PR#11804).
Rterm in interactive use did not implement R_FlushConsole() fully.
getGraphicsEvent() did not return onMouseMove events while a
mouse button was depressed.
The confirmation of a new frame for a windows() graphics
device works harder to give the device focus, including
bringing it to the top.
glob (used by Sys.glob() and unlink()) was not working correctly
on some filename patterns including non-ASCII characters.
Part of the problem was specific to 2.7.x, part has existed
since 2.5.0.
Sys.glob() returned a UTF-8 result in 2.7.[01] but failed to
mark its encoding.
User menus were not properly removed when a graph window was
closed.
Rscript -e (and Rterm -e) failed on Vista because the MSVCRT
function 'tmpfile' is broken on that platform.
Making a .msi installer now works with WiX 2.0.5805.0 (the file
format had been changed since 2.0.4221.0 as previously tested).
The grid package could set the clipping region outside the
device region, and the windows() device now intersects the two
when setting the clipping region. Once an invalid region was
set, semi-transparent text and lines might have been omitted.
Saving a graph in TIFF format could crash R (PR#11804).
Rterm in interactive use did not implement R_FlushConsole() fully.
getGraphicsEvent() did not return onMouseMove events while a mouse button was depressed.
The confirmation of a new frame for a windows() graphics device works harder to give the device focus, including bringing it to the top.
glob (used by Sys.glob() and unlink()) was not working correctly on some filename patterns including non-ASCII characters. Part of the problem was specific to 2.7.[01], part has existed since 2.5.0.
Sys.glob() returned a UTF-8 result in 2.7.[01] but failed to mark its encoding.
User menus were not properly removed when a graph window was closed.
Rscript -e (and Rterm -e) failed on Vista because the MSVCRT function 'tmpfile' is broken on that platform.
Making a .msi installer now works with WiX 2.0.5805.0 (the file format had been changed since 2.0.4221.0 as previously tested).
The grid package could set the clipping region outside the device region, and the windows() device now intersects the two when setting the clipping region. Once an invalid region was set, semi-transparent text and lines might have been omitted.
Some (but not all) Korean users have been having problems with Korean translations of the RGui menus. These had not been updated for a long time, and have now been removed.
axis() has new arguments 'col.ticks' and 'lwd.ticks' to allow the colour and line width of ticks to be set separately from that of the line (e.g. to set one or the other to transparent or zero width).
legend() has a new argument 'box.col' to set the colour of the enclosing box.
legend() gains a 'xpd' argument to make it easier to place a legend in the margins or outer margins.
stripchart() now passes '...' to title() (as well as to plot.default() and axis()). (Wish of PR#12202)
The automatic placement of legend() with 'title' and a reversed 'x' axis was incorrect. (PR#12019)
pchisq(x, df=0) was always one even for x < 0; similarly for pgamma(x, alpha=0).
add1() and drop1() now return a P-value of NaN in cases with df=0 for test="Chisq" (they gave NaN until pchisq was altered in R 2.6.2).
The default methods of drop1() and add1() now re-evaluate in the object's formula environment, rather than simply in the parent (informal bug report by Werner Stahel).
The undocumented limit of 8191 bytes on comments (from # to the end of the line) in R code has been removed.
edit.data.frame() not longer fails if called on a 0-column data frame and no column is created.
The automatic placement of legend() with 'title' and a
reversed 'x' axis was incorrect. (PR#12019)
edit.data.frame() not longer fails if called on a 0-column data frame and no column is created.
bxp() (and hence boxplot) now respects in-line graphical parameters 'xaxp'/'yaxp' as appropriate. (PR#11463)
barplot(log = "y") failed if there were NAs in the 'height' argument. (PR#11585)
pbeta() is more accurate in some cases with extreme values of ncp. (PR#11277).
Calling lapply() with certain primitives was not handling method dispatch correctly for is.numeric(), is.matrix(), is.array(), log() and the Math2 group. This affected data.matrix() which incorrectly regarded "Date" and "POSIXct" objects as numeric, and has been adjusted to still do sodo so as exceptions.
The use of multiple packages in 'LinkingTo' works again, and now works when the dependent packages are in libraries loaded by R but not by R --vanilla.
The use of multiple packages in 'LinkingTo' works again.
The automatic placement of legend() with 'title' and a reversed 'x' axis was incorrect. (PR#12019)
sprintf() returns elements of the result in UTF-8 when the format or any character input has a corresponding element declared as UTF-8. Similarly for paste(), elements of the result are in UTF-8 when any input to that element is declared as UTF-8.
as.Date() could fail to convert character strings representing days on which midnight did not exist in the current timezone (as happened in parts of Africa on 1960-01-01).
Plots of profile.mle() objects (package 'stats4') were misbehaving when the 'which' argument had been used in their calculation.
dnbinom(x, size, mu=*, ..) is now more accurate for very large 'size'. The same applies to pnbinom() and rnbinom().
The 'mle' confint() method now takes 'level' into account when setting 'alpha' for the profile.
within() was not handling correctly expressions that produced NULL columns. (PR#11131)
dev.print() and dev.copy2{eps,pdf}() now ensure that the current device is restored as the active device even if an error occurs. (PR#9801)
Calling lapply() with certain primitives was not handling method dispatch correctly for is.numeric(), is.matrix(), is.array(), log() and the Math2 group. This affected data.matrix() which incorrectly regarded "Date" and "POSIXct" objects as numeric, and has been adjusted to still do so.
There was a memory leak in C function ucstoutf8 used by some graphics devices.
axis() was ignoring par() mgp[3] if mgp was set in-line.
There was a memory leak in ucstoutf8 used by some graphics devices.
axis() was ignoring par() mgp[3] is mgp was set in-line.
Calling lapply() with certain primitives was not handling method dispatch correctly for is.numeric(), is.matrix(), is.array(), log() and the Math2 group. This affected data.matrix() which incorrectly regarded "Date" and "POSIXct" objects as numeric.
package.skeleton() was not looking for non-function objects in its 'environment' argument.
nls() was only finding its 'weights' argument in the case when all the variables in the formula were of the same length and hence that model.frame() could be used.
It was silently ignoring 'subset' and 'na.action' except in that case. Now they are ignored only if 'data' is a list and variables taken from 'data' are not all of the same length, in which case a warning is given.
Closing an X11 View() or dataentry window via its frame's close control now works better on some window managers.
rcond(<exactly singular matrix>) now gives 0 instead of an error.
axis() was ignoring par() mgp[3] is mgp was set in-line.
co[rv](use = "complete.obs") now always gives an error if there are no complete cases: they used to give NA if method = "pearson" but an error for the other two methods. (Note that this is pretty arbitrary, but zero-length vectors always give an error so it is at least consistent.)
Since sd(na.rm=TRUE) and var(na.rm=TRUE) both call cov(use = "complete.obs"), this applies also to them.
cor(use="pair") used to give diagonal 1 even if the variable was completely missing for the rank methods but NA for the Pearson method: it now gives NA in all cases.
cor(use="pair") for the rank methods gave a matrix result with dimensions > 0 even if one of the inputs had 0 columns.
There was a memory leak in ucstoutf8 used by some graphics devices.
The grid package could set the clipping region outside the device region, and the windows() device now intersects the two when setting the clipping region. Once an invalid region was set, semi-transparent text and lines might have been omitted.
Making a .msi installer now works with WiX 2.0.5805.0 (the file format had been changed since 2.0.4221.0 as previously tested).
getGraphicsEvent() did not return onMouseMove events while a mouse button was depressed.
Rscript -e (and Rterm -e) failed on Vista because the MSCVVCRT function 'tmpfile' is broken on that platform.
Making a .msi installer now works with WiX 2.0.5805.0 (the file format had been changed since 2.0.4221.0 as previously tested).
getGraphicsEvent() did not return onMouseMove events while a mouse button was depressed.
Rscript -e (and Rterm -e) failed on Vista because the MSCVVCRT function 'tmpfile' is broken on that platform.
assign() now warns if given a character vector of length > 1, rather than silently taking the first element.
Rscript -e (and Rterm -e) failed on Vista because the MSCVRT function 'tmpfile' is broken on that platform.
assign() now warns if given a character vector of length > 1, rather than silently taking the first element.
Rscript -e (and Rterm -e) failed on Vista because the MSCVRT function 'tmpfile' is broken on that platform.
shapiro.test(c(0,0,1)) now has P value >= 0 (instead of barely negative).
package.skeleton() wrongly warned about invalid code_files names when these were not in the current directory.
PCRE has been updated to 7.7 (bugfix release).
The GUI data editor for dataframes did not handle escape characters in entries properly. (PR#11897)
User menus were not properly removed when a graph window was closed.
glob (used by Sys.glob() and unlink()) was not working correctly on some filename patterns including non-ASCII characters. Part of the problem was specific to 2.7.x, part has existed since 2.5.0.
Sys.glob() returned a UTF-8 result in 2.7.[01] but failed to mark its encoding.
data.frame(x=1:2, y=3:4, row.names=c("a","NA"))[c(2,NA),] has correct row names c("NA,"NA.1") again.
<data.frame>[, ch] gives an error (again!) when ch is a string not exactly matching the column names, thanks to an oral bug report by Matthew Dowle.
plnorm(x, ..., log.p=TRUE) is now correct for x <= 0. (PR#11867)
<data.frame>[, ch] gives an error (again!) when ch is a string not exactly mathing the column names, thanks to an oral bug report by Matthew Dowle.
Rterm did not always flush console output properly.
Rterm in interactive use did not implement R_FlushConsole() fully.
getGraphicsEvent did not return onMouseMove events while a mouse button was depressed.
The confirmation of a new frame for a windows() graphics device works harder to give the device focus, including bringing it to the top.
phyper(x, 0,0,0) no longer hangs for huge x and gives 1 for x >= 0. (PR#11813)
Plotmath computed the glyph metrics for the wrong character (and perhaps for a non-existent one) if this was a single-byte character with the top bit set. An example was symbol("\300").
phyper(x, 0,0,0) no longer hangs for huge x and gives 1 for x >= 0. (PR#11813)
Plotmath computed the glyph metrics for the wrong character (and perhaps for a non-existent one) if this was a single-byte character with the top bit set. An example was symbol("\300").
Rterm did not always flush console output properly.
Saving a graph in TIFF format could crash R (PR#11804).
sink() and cat() could divert output to a non-writable connection.
Plotmath computed the glyph metrics for the wrong character (and perhaps for a non-existent one) if this was a single-byte character with the top bit set. An example was symbol("\300").
symbol() in plotmath expressions works again with non-ASCII input on devices that use UTF-8 for the symbol font.
Adobe Symbol was missing from the encodings in tools::charset_to_EncodingUnicode.
file.choose() in SDI mode now restores the window focus properly.
The 'noquote' method for c() now works correctly with three or more arguments.
tools::texi2dvi() has a new argument 'texinputs' to allow the
TeX and bibtex input paths to be specified (even on MiKTeX).
dev.copy2pdf() gains an 'out.type' argument to allow it to be
used with cairo_pdf() or quartz(type = "pdf").
poly() has additional checks against user error (as in PR#11243).
The Mac OS quartz() device draws contiguous lines much faster.
A field containing just a sign is no longer regarded as numeric
(it was on all platforms in 2.7.0, but not on most in earlier
versions of R).
CITATION files are now read in Latin-1: quite a few were
failing if used in a multibyte locale such as UTF-8.
The DESCRIPTION file of a package can specify an 'OS_type' field
as either 'unix' or 'windows' to confine installation to that
OS type.
HoltWinters() now uses optimize() rather than optim for
one-parameter problems which should be more reliable (PR#11469).
axis() now respects the setting of par("xpd") when clipping.
The 'factor' method of format() now preserves names, dims and
dimnames in the same way as for character and numeric inputs.
(PR#11512)
The use of unserialize() on character strings is deprecated:
that was a format used in R < 2.4.0.
The use of embedded nuls in character strings is deprecated:
They will no longer be allowed in R 2.8.0.
R CMD check checks for possible check directories in the
sources -- in mid-2008 there were about 20 examples on CRAN.
R CMD build tries harder to clean up the inst/doc directory
from the remnants of earlier builds.
It also removes any directories with extension .Rcheck, and files .DS_Store and ._* (created by tar on Mac OS X under some circumstances: it now sets environment variables to ask for such files not to be created by that tar.)
Encoding<- on NA_character_ converted it to "NA".
Adobe Symbol was missing from the encodings in
tools::charset_to_Encoding.
diag(matrix(x, 0, 0)) now returns a 0-length vector of the
correct mode, instead of always numeric.
The parser sometimes accepted invalid quoted strings in a UTF-8
locale.
plot.default(x, y) now dispatches to Axis() methods whether
y is NULL or not.
On Mac OS X, the Cocoa Quartz window could close without warning
under certain circumstances (specific autorelease pool flush).
Plotting symbols with separate border and fill colours (e.g.,
plot(pch = 21)) now works with transparent 'col', but opaque
or semi-transparent 'bg'. Previously, if 'col' was
transparent then 'bg' was ignored and nothing was drawn.
file.path() did not work correctly in 2.7.0 if the components
had different encodings.
merge() failed if there were no common columns and one of the
inputs had zero rows.
expand.grid() failed if an input had length 0.
match() does again truncate strings at embedded nuls (as newly
documented in 2.7.0).
Because of a typo, 'pointsize' in png(type="cairo") (and jpeg,
bmp, tiff) devices was being interpreted in pixels not bigpoints.
is() was wrong for some S3 class objects with class of length
greater than one.
undoc() / codoc() were not checking all S4 methods in some cases.
Use of textConnection(NULL, mode="w") could segfault.
Use of strwidth/height(units="user") (the default) is again an
error before a user coordinate system has been set on the
device, rather than giving nonsensical values (the effect of
r31367).
Rare string width calculations in package grid were not
interpreting the string encoding correctly.
hasMethods(f, env) {without specified 'package'} now works better.
A missing PROTECT could cause segfaults on string
comparisons. (PR#11421)
str(structure(1, classID = "Pooh")) now works fine.
A missing PROTECT could cause segfaults in if() if coercion of
the condition was required or a warning was to be given.
plot(<table>) now uses a sensible default main title.
validObject() called with complete=TRUE did not use inherited
validity methods for slot classes.
Several bugs fixed in as(): the initial method lookup was not
using the table with inherited methods (so inheritance had to
be recomputed each time); coerce() should not be called
directly--it can insert invalid inherited methods; the
constructed as() methods were not retaining the function's
environment.
influence.measures(<glm-object>) now computes the same
Cook's distance approximations as cooks.distance().
plot(<glm>, which=5) uses more correct Cook's distance contours;
(fix to fix to PR#9316).
pdf() and postscript() were not working correctly in 2.7.0 with
UTF-8 encoded data in a non-UTF-8 MBCS (e.g. EUC-JP on Unix,
CJK locales on Windows).
conformMethod(), called by setMethod(), now checks better about
argument names in wrong order. Whereas it only warns currently,
it is planned to become an error in the future.
The predict() method for prcomp() had an incorrect check for
the number of columns of 'newdata' if the columns were not named.
The axis() function now distinguishes between setting "at" to
NULL or a zero-length vector, treating the latter as a request
for no ticks. This corrects the handling of the "x" parameter
to rug().
glob2rx("*[*") now produces a correct regular expression.
The canvas is no longer painted on copy or save in Cocoa Quartz.
identify() in Quartz can now be terminated by either using popup
menu equivalent (Ctrl-click or second mouse button) or by pressing
the <Esc> key. The latter was documented but did not work.
tools:::.check_package_depends() {called from 'R CMD check'} now
also works correctly when directory-name != package-name.
Source references were sometimes off by a line.
The quartz() parameter 'antialias' is no longer ignored.
The Quartz device is now trying hard to remove anti-aliasing
effects for rasterized backends in plots that use adjacent,
borderless rectangles such as image().
The srcfilecopy() function now adds a timestamp to the object it
creates.
parse() would lose a token when run on stdin().
socketConnection() was using internally the class "socket"
and not "sockconn", which caused a conflict with make.socket().
(PR#11515)
Quartz is now trying harder to find the proper font for a given
family which resolves font issues on Mac OS X 10.4. Full font
names and PostScript names can be used interchangeably. (Note,
however that italic/oblique font faces of Helvetica are not
included in the Mac OS X 10.4 system).
qf() no longer gives NaN when one of df1 and df2 is large and
the other is infinite (including if both are infinite); it is more
accurate e.g. for qf(1e-18, 2,4).
qbeta(-1e10, 50, 40, log.p=TRUE) no longer hangs.
Cocoa Quartz backend autodetection of display DPI was not
correct for screens rotated by 90 or 270 degrees.
selectMethod("coerce", .) now uses a correct default for
'useInherited', and hence no longer may mess up the method cache.
show() now also works on "unregistered" S3 class objects.
formatC(*, format="fg", flag="#") is no longer dropping trailing
zeros.
tools::texi2dvi() has a new argument 'texinputs' to allow the TeX and bibtex input paths to be specified (even on MiKTeX).
dev.copy2pdf() gains an 'out.type' argument to allow it to be used with cairo_pdf() or quartz(type = "pdf").
poly() has additional checks against user error (as in PR#11243).
The Mac OS quartz() device draws contiguous lines much faster.
A field containing just a sign is no longer regarded as numeric (it was on all platforms in 2.7.0, but not on most in earlier versions of R). Similarly, '.' is now always non-numeric.
CITATION files are now read in Latin-1: quite a few were failing if used in a multibyte locale such as UTF-8.
The DESCRIPTION file of a package can specify an 'OS_type' field as either 'unix' or 'windows' to confine installation to that OS type.
HoltWinters() now uses optimize() rather than optim for one-parameter problems which should be more reliable (PR#11469).
axis() now respects the setting of par("xpd") when clipping.
The 'factor' method of format() now preserves names, dims and dimnames in the same way as for character and numeric inputs. (PR#11512)
read.DIF(*, transpose=TRUE) now allows to correctly read DIF files produced by some versions of Excel.
The use of unserialize() on character strings is deprecated: that was a format used in R < 2.4.0.
The use of embedded nuls in character strings is deprecated: They will no longer be allowed in R 2.8.0.
R CMD check checks for possible check directories in the sources -- in mid-2008 there were about 20 examples on CRAN.
R CMD build tries harder to clean up the inst/doc directory from the remnants of earlier builds.
It also removes any directories with extension .Rcheck, and files .DS_Store and ._* (created by tar on Mac OS X under some circumstances: it now sets environment variables to ask for such files not to be created by that tar.)
Encoding<- on NA_character_ converted it to "NA".
Adobe Symbol was missing from the encodings in tools::charset_to_Encoding.
diag(matrix(x, 0, 0)) now returns a 0-length vector of the correct mode, instead of always numeric.
The parser sometimes accepted invalid quoted strings in a UTF-8 locale.
plot.default(x, y) now dispatches to Axis() methods whether y is NULL or not.
On Mac OS X, the Cocoa Quartz window could close without warning under certain circumstances (specific autorelease pool flush).
Plotting symbols with separate border and fill colours (e.g., plot(pch = 21)) now works with transparent 'col', but opaque or semi-transparent 'bg'. Previously, if 'col' was transparent then 'bg' was ignored and nothing was drawn.
file.path() did not work correctly in 2.7.0 if the components had different encodings.
merge() failed if there were no common columns and one of the inputs had zero rows.
expand.grid() failed if an input had length 0.
match() does again truncate strings at embedded nuls (as newly documented in 2.7.0).
Because of a typo, 'pointsize' in png(type="cairo") (and jpeg, bmp, tiff) devices was being interpreted in pixels not bigpoints.
is() was wrong for some S3 class objects with class of length greater than one.
undoc() / codoc() were not checking all S4 methods in some cases.
Use of textConnection(NULL, mode="w") could segfault.
Use of strwidth/height(units="user") (the default) is again an error before a user coordinate system has been set on the device, rather than giving nonsensical values (the effect of r31367).
Rare string width calculations in package grid were not interpreting the string encoding correctly.
hasMethods(f, env) {without specified 'package'} now works better.
A missing PROTECT could cause segfaults on string comparisons. (PR#11421)
str(structure(1, classID = "Pooh")) now works fine.
A missing PROTECT could cause segfaults in if() if coercion of the condition was required or a warning was to be given.
plot(<table>) now uses a sensible default main title.
validObject() called with complete=TRUE did not use inherited validity methods for slot classes.
Several bugs fixed in as(): the initial method lookup was not using the table with inherited methods (so inheritance had to be recomputed each time); coerce() should not be called directly--it can insert invalid inherited methods; the constructed as() methods were not retaining the function's environment.
influence.measures(<glm-object>) now computes the same Cook's distance approximations as cooks.distance().
plot(<glm>, which=5) uses more correct Cook's distance contours; (fix to fix to PR#9316).
pdf() and postscript() were not working correctly in 2.7.0 with UTF-8 encoded data in a non-UTF-8 MBCS (e.g. EUC-JP on Unix, CJK locales on Windows).
conformMethod(), called by setMethod(), now checks better about argument names in wrong order. Whereas it only warns currently, it is planned to become an error in the future.
The predict() method for prcomp() had an incorrect check for the number of columns of 'newdata' if the columns were not named.
The axis() function now distinguishes between setting "at" to NULL or a zero-length vector, treating the latter as a request for no ticks. This corrects the handling of the "x" parameter to rug().
glob2rx("*[*") now produces a correct regular expression.
The canvas is no longer painted on copy or save in Cocoa Quartz.
identify() in Quartz can now be terminated by either using popup menu equivalent (Ctrl-click or second mouse button) or by pressing the <Esc> key. The latter was documented but did not work.
tools:::.check_package_depends() {called from 'R CMD check'} now also works correctly when directory-name != package-name.
Source references were sometimes off by a line.
The quartz() parameter 'antialias' is no longer ignored.
The Quartz device is now trying hard to remove anti-aliasing effects for rasterized backends in plots that use adjacent, borderless rectangles such as image().
The srcfilecopy() function now adds a timestamp to the object it creates.
parse() would lose a token when run on stdin().
socketConnection() was using internally the class "socket" and not "sockconn", which caused a conflict with make.socket(). (PR#11515)
Quartz is now trying harder to find the proper font for a given family which resolves font issues on Mac OS X 10.4. Full font names and PostScript names can be used interchangeably. (Note, however that italic/oblique font faces of Helvetica are not included in the Mac OS X 10.4 system).
qf() no longer gives NaN when one of df1 and df2 is large and the other is infinite (including if both are infinite); it is more accurate e.g. for qf(1e-18, 2,4).
qbeta(-1e10, 50, 40, log.p=TRUE) no longer hangs.
Cocoa Quartz backend autodetection of display DPI was not correct for screens rotated by 90 or 270 degrees.
selectMethod("coerce", .) now uses a correct default for 'useInherited', and hence no longer may mess up the method cache.
show() now also works on "unregistered" S3 class objects.
formatC(*, format="fg", flag="#") is no longer dropping trailing zeros.
read.table(file = stdin()) with invalid input could leave the connection in an invalid state and hence cause a later segfault. (PR#11627)
read.DIF() did not obey the default 'stringsAsFactors = TRUE'.
Rgui now accepts Unicode characters invalid in the locale when
pasted in and converts them to \uxxxx sequences before passing
to R.
The Save as | Postscript ... file selection box now offers
*.eps (default) and *.ps file selections.
nchar() now gives the number of characters and their width as
would be printed in Rgui for non-representable UTF-8 strings,
not as they would be printed in Rterm (via <U+xxxx> escapes).
savePlot() now adds the file type as an extension to the
filename if no dot ('.') is present in the filename. This
provides the same default as in versions prior to 2.7.0, but
allows the extension to be specified explicitly. (Contributed
by Steve Ellison.)
Sys.getenv() could read incorrectly non-ASCII values.
The vertical scrollbar on the data editor/viewer now works
when scrolling beyond 65535 rows. (PR#11291)
getWinProgressBar() returned an integer result -- it now
returns a double value.
basename() and dirname() could truncate their results when
Unicode chars were used (usually in a CJK locale).
memory.size() no longer wraps around allocations greater than
2Gb. (PR#11596)
Rgui now accepts Unicode characters invalid in the locale when pasted in and converts them to \uxxxx sequences before passing to R.
The Save as | Postscript ... file selection box now offers *.eps (default) and *.ps file selections.
nchar() now gives the number of characters and their width as would be printed in Rgui for non-representable UTF-8 strings, not as they would be printed in Rterm (via <U+xxxx> escapes).
savePlot() now adds the file type as an extension to the filename if no dot ('.') is present in the filename. This provides the same default as in versions prior to 2.7.0, but allows the extension to be specified explicitly. (Contributed by Steve Ellison.)
Sys.getenv() could read incorrectly non-ASCII values.
The vertical scrollbar on the data editor/viewer now works when scrolling beyond 65535 rows. (PR#11291)
getWinProgressBar() returned an integer result -- it now returns a double value.
basename() and dirname() could truncate their results when Unicode chars were used (usually in a CJK locale).
memory.size() no longer wraps around allocations greater than 2Gb. (PR#11596)
read.table(file = stdin()) with invalid input could leave the connection in an invalid state and hence cause a later segfault. (PR#11627)
show() now also works on "unregistered" S3 class objects.
formatC(*, format="fg", flag="#") is no longer dropping trailing zeros.
selectMethod("coerce", .) now uses a correct default for 'useInherited', and hence no longer may mess up the method cache.
Cocoa Quartz backend autodetection of display DPI was not correct for screens rotated by 90 or 270 degrees.
nchar() now gives the number of characters and their width as would be printed in Rgui for non-representable UTF-8 strings, not as they would be printed in Rterm (via <U+xxxx> escapes).
memory.size() no longer wraps around allocations greater than 2Gb. (PR#11596)
The 'factor' method of format() now preserves names, dims and dimnames in the same way as for character and numeric inputs. (PR#11512)
plot(<table>) now uses a sensible default main title.
qf() no longer gives NaN when one of df1 and df2 is large and the other is infinite (including if both are infinite); it is more accurate e.g. for qf(1e-18, 2,4).
qbeta(-1e10, 50, 40, log.p=TRUE) no longer hangs.
Quartz is now trying harder to find the proper font for a given family which resolves font issues on Mac OS X 10.4. Full font names and PostScript names can be used interchangeably. (Note, however that italic/oblique font faces of Helvetica are not included in the Mac OS X 10.4 system).
nchar() now gives the number of characters and their width as would be printed in Rgui for non-representable UTF-8 strings, not as they would be printed in Rterm (via <U+xxxx> escapes).
memory.size() no longer wraps around allocations greater than 2Gb. (PR#11596)
savePlot() now adds the file type as an extension to the filename if no dot ('.') is present in the filename. This provides the same default as in versions prior to 2.7.0, but allows the extension to be specified explicitly. (Contributed by Steve Ellison.)
R CMD build tries harder to clean up the inst/doc directory from the remnants of earlier builds.
It also removes any directories with extension .Rcheck., and files .DS_Store and ._* (created by tar on Mac OS X under some circumstances: it now sets environment variables to ask for such files not to be created by that tar.)
nchar() now gives the number of characters and their width as would be printed in Rgui for UTF-8 strings, not as they would be printed in Rterm (via <U+xxxx> escapes).
The 'factor' method of format() now preserves names, dims and dimnames in the same way as for character and numeric inputs.
socketConnection() was using internally the class "socket" and not "sockconn", which caused a conflict with make.socket(). (PR#11515)
Source references were sometimes off by a line.
The quartz() parameter 'antialias' is no longer ignored.
The Quartz device is now trying hard to remove anti-aliasing effects for rasterized backends in plots that use adjacent, borderless rectangles such as image().
The srcfilecopy() function now adds a timestamp to the object it creates.
parse() would lose a token when run on stdin().
conformMethod(), called by setMethod(), now checks better about argument names in wrong order. Whereas it only warns currently, it is planned to become be an error in the future.
tools:::.check_package_depends() {called from 'R CMD check'} now also works correctly when directory-name != package-name.
axis() now respects the setting of par("xpd") when clipping.
The axis() function now distinguishes between setting "at" to NULL or a zero-length vector, treating the latter as a request for no ticks. This corrects the handling of the "x" parameter to rug().
glob2rx("*[*") now produces a correct regular expression.
The canvas is no longer painted on copy or save in Cocoa Quartz.
identify() in Quartz can now be terminated by either using popup menu equivalent (Ctrl-click or second mouse button) or by pressing the <Esc> key. The latter was documented but did not work.
HoltWinters() now uses optimize() rather than optim for one-parameter problems which should be more reliable (PR#11469).
hasMethods(f, env) {without specified 'package'} now works better.
conformMethod(), called by setMethod(), now checks better about argument names in wrong order. Whereas it only warns currently, it is planned to become be an error in the future.
The predict() method for prcomp() had an incorrect check for the number of columns of 'newdata' if the columns were not named.
validObject() called with complete=TRUE did not use inherited validity methods for slot classes.
sSeveral bugs fixed in as(): the initial method lookup was not using the table with inherited methods (so inheritance had to be recomputed each time); coerce() should not be called directly--it can insert invalid inherited methods; the constructed as() methods were not retaining the function's environment.
plot(<glm>, which=5) uses more correct cCook's distance contours; (fix to fix to PR#9316).
pdf() and postscript() were not working correctly in 2.7.0 with UTF-8 encoded data in a non-UTF-8 MBCS (e.g. EUC-JP on Unix, CJK locales on Windows).
The predict() method for prcomp() had an incorrect check for the number of columns of 'newdata' if the columns were not named.
pdf() and postscript() were not working correctly in 2.7.0 with UTF-8 encoded data in a non-UTF-8 MBCS (e.g. EUC-JP on Unix, CJK locales on Windows).
basename() and dirname() could truncate their results when Unicode chars were used (usually in a CJK locale).
getWinProgressBar() returned an integer result -- it now returns a double value.
o basename() and dirname() could truncate their results when Unicode chars were used (usually in a CJK locale).
getWinProgressBar() returned an integer result -- it now returns a double value.
o basename() and dirname() could truncate their results when Unicode chars were used (usually in a CJK locale).
pdf() and postscript() were not working correctly with UTF-8 encoded data in a non-UTF-8 MBCS (e.g. CJK locales on Windows).
influence.measures(<glm-object>) now computes the same Cook's distance approximations as cooks.distance().
plot(<glm>, which=5) uses more correct cook's distance contours; (fix to fix to PR#9316).
validObject called with complete=TRUE did not use inherited validity methods for slot classes.
several bugs fixed in as(): the initial method lookup was not using the table with inherited methods (so inheritance had to be recomputed each time); coerce() should not be called directly--it can insert invalid inherited methods; the constructed as() methods were not retaining the function's environment.
getWinProgressBar() returned an integer result -- it now returns a double value.
A missing PROTECT could cause segfaults in if() if coercion of the condition was required or a warning was to be given.
A missing PROTECT could cause segfaults on string comparisons. (PR#11421)
str(structure(1, classID = "Pooh")) now works fine.
getWinProgressBar() returned an integer result -- it now returns a double value.
The DESCRIPTION file of a package can specify an 'OS_type' field as either 'unix' or 'windows' to confine installation to that OS type.
QuartzThe Mac OS quartz() device draws contiguous lines much faster.
R CMD check checks for possible check directories in the sources -- in mid-2008 there were about 20 examples on CRAN.
file.path() did not work correctly in 2.7.0 if the components had different encodings.
is() was wrong for some S3 class objects with class forof length greater than one.
undoc() / codoc() where not checking all S4 methods in some cases.
R CMD build tries harder to clean up the inst/doc directory from the remnants of earlier builds.
It also removes any directories with extension .Rcheck.
Use of strwidth/height(units="user") (the default) is again an error before a user coordinate system has been set on the device, rather than giving nonsensical values (the effect of r31367).
Rare string width calculations in package grid were not interpreting the string encoding correctly.
is() was wrong for some S3 class objects with multi-string classclass for length greater than one.
Use of textConnection(NULL, mode="w") could segfault.
A field containing just a sign is no longer regarded as numeric (it was on all platforms in 2.7.0, but not on most in earlier versions of R).
CITATION files are now read in Latin-1: quite a few were failing if used in a multibyte locale such as UTF-8.
Quartz draws contiguous lines much faster.
is() was wrong for some S3 class objects with multi-string class.
undoc() / codoc() where not checking all S4 methods in some cases.
Because of a typo, 'pointsize' in png(type="cairo") etc (and jpeg, bmp, tiff) devices was being interpreted in pixels not bigpoints.
Because of a typo, 'pointsize' in png(type="cairo") etc devices was being interpreted in pixels not bigpoints.
Rgui now accepts Unicode characters invalid in the locale when pasted in and converts them to \uxxxx sequences before passing to R.
The Save as | Postscript ... file selection box now offers *.eps (default) and *.ps file selections.
Rgui now accepts Unicode characters invalid in the locale when
pasted in and converts them to \uxxxx sequences before passing
to R.
Quartz draws contiguous lines much faster
The use of embedded nuls in character strings is deprecated: They will no longer be allowed in R 2.8.0.
merge() failed if there were no common columns and one of the inputs had zero rows.
expand.grid() failed if an input had length 0.
match() does again truncate strings at embedded nuls (as newly documented in 2.7.0).
The vertical scrollbar on the data editor/viewer now works when scrolling beyond 65535 rows. (PR#11291)
Under certain rare circumstances the parser could accept
invalid UTF-8 quoted strings.
The parser sometimes accepted invalid quoted strings in a UTF-8 locale.
file.path() did not work correctly if the components had different encodings.
plot.default(x, y) now should correctly dispatchdispatches to Axis() methods whether y is NULL or not.
On Mac OS X, the Cocoa Quartz window could close without warning under certain circumstances (specific autorelease pool flush).
Rgui now accepts Unicode characters invalid in the locale when pasted in and converts them to \uxxxx sequences before passing to R.
poly() has additional checks against user error (as in PR#11243).
The C macro 'allocString' is deprecated -- use 'mkChar',
or 'allocVector' directly if really necessary.
plot.default(x, y) now should correctly dispatch to Axis() methods whether y is NULL or not.
Plotting symbols with separate border and fill colours (e.g., plot(pch = 21)) now works with transparent 'col', but opaque or semi-transparent 'bg'. Previously, if 'col' was transparent then 'bg' was ignored and nothing was drawn.
list.files() gains a 'ignore.case' argument, to allow case-insensitive matching on some Windows/MacOS file systems.
Sys.getenv() could read incorrectly non-ASCII values.
tools::texi2dvi() has a new argument 'texinputs' to allow the TeX and bibtex input paths to be specified (even on MiKTeX).
dev.copy2pdf() gains an 'out.type' argument to allow it to be used with cairo_pdf() or quartz(type = "pdf").
The use of unserialize() on character strings is deprecated: that was a format used in R < 2.4.0.
The C macro 'allocString' is deprecated -- use 'mkChar', or 'allocVector' directly if really necessary.
R CMD build tries harder to clean up the inst/doc directory from the remnants of earlier builds.
Encoding<- on NA_character_ converted it to "NA".
Adobe Symbol was missing from the encodings in tools::charset_to_Encoding.
diag(matrix(x, 0, 0)) now returns a 0-length vector of the correct mode, instead of always numeric.
Under certain rare circumstances the parser could accept invalid UTF-8 quoted strings.
Cocoa Quartz window could close without warning under certain circumstances (specific autorelease pool flush).
The C macro 'allocString' will be removed in 2.8.0 -- use 'mkChar', or 'allocVector' directly if really necessary.
load() again reads correctly character strings with embedded nuls. (This was broken in 2.6.x, but worked in earlier versions.)
Collating (e.g. <) and sorting is done in UTF-8 where one of the items is in UTF-8. It seems that MSVCRT's collation order can be different in widechar and in ASCII, so this can lead to inconsistencies.
The size of the Rgui buffer is now set in characters not bytes (the difference only matters in CJK locales), but for backwards compatibility the entry in Rconsole is still called 'bufbytes'. The default has been increased to 250,000 chars (0.5Mb).
R CMD now sets TEXINPUTS to .;%R_HOME%/share/texmf;%TEXINPUTS%; by exact analogy with Unix-alikes (that is, including the current directory before R's texmf directory).