R 3.0.3 (codename “Warm Puppy) was released several days ago. The full list of new features and bug fixes is provided below.
Upgrading to R 3.0.3
You can download the latest version from here. Or, if you are using Windows, you can upgrade to the latest version using the installr package. Simply run the following code:
# installing/loading the package:
if(!require(installr)) {
install.packages("installr"); require(installr)} #load / install+load installr
updateR()
I try to keep the installr package updated and useful. If you have any suggestions or remarks on the package, you’re invited to leave a comment below.
If you use the global library system (as I do), you can run the following in the new version of R:
source("https://www.r-statistics.com/wp-content/uploads/2010/04/upgrading-R-on-windows.r.txt")
New.R.RunMe()
CHANGES IN R 3.0.3:
NEW FEATURES
On Windows there is support for making ‘.texi’ manuals
usingtexinfo
5.0 or later: the setting is in file
‘src/gnuwin32/MkRules.dist’.A packaging of the Perl script and modules for
texinfo
5.2 has been made available at
http://www.stats.ox.ac.uk/pub/Rtools/.write.table()
now handles matrices of
2^31 or more elements, for those with large amounts
of patience and disc space.There is a new function,
La_version()
, to report the
version of LAPACK in use.The HTML version of ‘An Introduction to R’ now has
links to PNG versions of the figures.There is some support to produce manuals in ebook
formats. (See ‘doc/manual/Makefile’. Suggested by Mauro
Cavalcanti.)On a Unix-alike
Sys.timezone()
returnsNA
if
the environment variable TZ is unset, to distinguish it from
an empty string which on some OSes means the UTC time zone.The backtick may now be escaped in strings, to allow names
containing them to be constructed, e.g.```
. (PR#15621)read.table()
,readLines()
andscan()
now warn when an embedded nul is found in the input. (Related to
PR#15625 which was puzzled by the behaviour in this unsupported
case.)(Windows only.)
file.symlink()
works around the
undocumented restriction of the Windows system call to
backslashes. (Wish of PR#15631.)KalmanForecast(fast = FALSE)
is now the default, and
the help contains an example of howfast = TRUE
can be used
in this version. (The usage will change in 3.1.0.)strptime()
now checks the locale only when
locale-specific formats are used and caches the locale in use:
this can halve the time taken on OSes with slow system
functions (e.g. OS X).strptime()
and theformat()
methods for
classes"POSIXct"
,"POSIXlt"
and"Date"
recognize strings with marked encodings: this allows, for example,
UTF-8 French month names to be read on (French) Windows.iconv(to = "utf8")
is now accepted on all platforms
(some implementations did already, but GNU libiconv did not:
however converted strings were not marked as being in UTF-8). The
official name,"UTF-8"
is still preferred.available.packages()
is better protected against
corrupt metadata files. (A recurring problem with Debian package
shogun-r: PR#14713.)Finalizers are marked to be run at garbage collection, but
run only at a somewhat safer later time (when interrupts are
checked). This circumvents some problems with finalizers running
arbitrary code during garbage collection (the known instances being
runningoptions()
and (C-level)path.expand()
re-entrantly).
INSTALLATION and INCLUDED SOFTWARE
The included version of PCRE has been updated to 8.34. This
fixes bugs and makes the behaviour closer to Perl 5.18. In
particular, the concept of ‘space’ includes VT and
hence agrees with POSIX’s.
PACKAGE INSTALLATION
The new field SysDataCompression in the
‘DESCRIPTION’ file allows user control over the compression
used for ‘sysdata.rda’ objects in the lazy-load database.install.packages(dependencies = value)
forvalue =
(the default) or
NAvalue = TRUE
omits packages only in
LinkingTo
for binary package installs.
C-LEVEL FACILITIES
The long undocumented remapping of
rround()
to
Rf_fround()
in header ‘Rmath.h’ is now formally
deprecated: usefround()
directly.Remapping of
prec()
andtrunc()
in the
‘Rmath.h’ header has been disabled in C++ code (it has caused
breakage withlibc++
headers).
BUG FIXES
getParseData()
truncated the imaginary part of
complex number constants. (Reported by Yihui Xie.)dbeta(x, a, b)
witha
orb
within a
factor of 2 of the largest representable number could
infinite-loop. (Reported by Ioannis Kosmidis.)provideDimnames()
failed for arrays with a 0
dimension. (PR#15465)rbind()
andcbind()
did not handle
list objects correctly. (PR#15468)replayPlot()
now checks if it is replaying a plot
from the same session.rasterImage()
andgrid.raster()
now give
error on an empty (zero-length) raster. (Reported by Ben North.)plot.lm()
would sometimes scramble the labels
in plot type 5. (PR#15458 and PR#14837)min()
did not handleNA_character_
values
properly. (Reported by Magnus Thor Torfason.)(Windows only.)
readRegistry()
would duplicate
default values for keys. (PR#15455)str(..., strict.width = "cut")
did not handle
it properly when more than one line needed to be cut. (Reported
by Gerrit Eichner.)Removing subclass back-references when S4 classes were
removed or their namespace unloaded had several bugs (e.g., PR#15481).aggregate()
could fail when there were too many
levels present in theby
argument. (PR#15004)namespaceImportFrom()
needed to detect primitive
functions when checking for duplicated imports (reported by
Karl Forner).getGraphicsEvent()
did not exit when a user closed
the graphics window. (PR#15208)Errors in vignettes were not always captured and displayed
properly. (PR#15495)contour()
could fail when dealing with extremely
small z values. (PR#15454)Several functions did not handle zero-length vectors properly,
includingbrowseEnv()
,format()
,gl()
,
relist()
andsummary.data.frame()
. (E.g., PR#15499)Sweave()
did not restore the R output to the
console if it was interrupted by a user in the middle of evaluating
a code chunk. (Reported by Michael Sumner.)Fake installs of packages with vignettes work again.
Illegal characters in the input caused
parse()
(and thussource()
) to segfault. (PR#15518)The nonsensical use of
nmax = 1
in
duplicated()
orunique()
is now silently ignored.qcauchy(p, *)
is now fully accurate even when p is
very close to 1. (PR#15521)The
validmu()
andvalideta()
functions in the
standardglm()
families now also report non-finite values,
rather than failing.Saved vignette results (in a ‘.Rout.save’ file) were
not being compared to the new ones duringR CMD check
.Double-clicking outside of the list box (e.g. on the scrollbar)
of a Tk listbox widget generated bytk_select.list()
no
longer causes the window to close. (PR#15407)Improved handling of edge cases in
parallel::splitindices()
. (PR#15552)HTML display of results from
help.search()
and
??
sometimes contained badly constructed links.c()
and related functions such asunlist()
converted raw vectors to invalid logical vectors. (PR#15535)(Windows only) When a call to
system2()
specified
one ofstdin
,stdout
orstderr
to be a file,
but the command was not found (e.g. it contained its arguments,
or the program was not on the PATH), it left the file open
and unusable until R terminated. (Reported by Mathew McLean.)The
bmp()
device was not recordingres = NA
correctly: it is now recorded as 72 ppi.Several potential problems with compiler-specific behaviour
have been identified using the ‘Undefined Behaviour
Sanitizer’ in conjunction with theclang
compiler.hcl()
now honoursNA
inputs (previously they
were mapped to black).Some translations in base packages were being looked up in
the main catalog rather than that for the package.As a result of the 3.0.2 change about ‘the last
second before the epoch’, most conversions which should have given
NA
returned that time. (The platforms affected include
Linux and OS X, but not Windows nor Solaris.)rowsum()
has more support for matrices and dataframes
with 2^31 or more elements. (PR#15587)predict(<lm object>, interval = "confidence", scale =
now works. (PR#15564)
<something>)The bug fix in 3.0.2 for PR#15411 was too aggressive,
and sometimes removed spaces that should not have been removed.
(PR#15583)Running R code in a tcltk callback failed to set the
busy flag, which will be needed to tell OS X not to ‘App Nap’.The code for date-times before 1902 assumed that the offset
from GMT in 1902 was a whole number of minutes: that was not true
of Paris (as recorded on some platforms).Using
Sys.setlocale
to setLC_NUMERIC
to
"C"
(to restore the sane behavior) no longer gives a
warning.deparse()
now deparses complex vectors in a way that
re-parses to the original values. (PR#15534, patch based on code
submitted by Alex Bertram.)In some extreme cases (more than 10^15)
integer inputs todpqrxxx()
functions might have been
rounded up by one (with a warning about being non-integer).
(PR#15624)Plotting symbol
pch = 14
had the triangle upside down
on some devices (typically screen devices). The triangle is
supposed to be point up. (Reported by Bill Venables.)getSrcref()
did not work on method definitions if
rematchDefinition()
had been used.KalmanForecast(fast = FALSE)
reported a (harmless)
stack imbalance.The count of observations used by
KalmanRun()
did not
take missing values into account.In locales where the abbreviated name of one month is a
partial match for the full name of a later one, the%B
format instrptime()
could fail. An example was French on
OS X, where juin is abbreviated to jui and partially
matchesjuillet
. Similarly for weekday names.pbeta(x, a, b, log.p = TRUE)
sometimes underflowed to
zero for very small and very differently sizeda
,b
.
(PR#15641)approx()
andapproxfun()
now handle infinite
values with the"constant"
method. (PR#15655)stripchart()
again respects reversed limits in
xlim
andylim
. (PR#15664)
The installr package is one of the most useful package I have ever seen. It is really really helpful. Thanks for this great package and keep it always up to date as you have said in the beginning of the post.
I forgot to say one thing. Update() deletes the installation file, but it would be great if I can store it. My little suggestion is to keep the installation file temporarily so that the user can decide whether to keep it or not.
Hi Boral,
Thank you very much for your kind words. Knowing that the installr package is helpful to others is a great motivator in having me keep taking care of it.
As to your suggestion, I have now added a new parameter to updateR called “keep_install_file”. You can run
updateR(keep_install_file=TRUE)
And it would keep the installed file. You can also set the folder in which you’d like the file to be saved at by using the new parameter: download_dir. For example:
updateR(keep_install_file=TRUE, download_dir = “d:R_installer_files”)
These new features are currently only on github, and you can get it using:
devtools::install_github(‘talgalili/installr’)
(assuming you have Rtools and devtools already installed)
Otherwise, I’ll resubmit the package to CRAN in the next month or so probably (to see if I find any more features to add to this release).
With regards,
Tal
Where can I find a good tutorial for using this?
I have literally NO programming experience. Thanks.
Hi enlesforz ,
Do you mean an introduction to R?
I suggest you to start here:
http://tryr.codeschool.com/
Then go here:
https://www.datacamp.com/courses/introduction-to-r
And move on from there…
Much appreciated.
So, when adding a package in Rstudio it wants to install the package in the 3.03 library instead of the global library. So, how do I make Rstudio install new packages to the global R library?