This blog is updated daily.
A general description is here.
‘merge()’ gains new option ‘no.dups’ and by default suffixes the second of two duplicated column names, thanks to a proposal by Scott Ritchie (and Gabe Becker).
‘factor()’ now uses ‘order()’ to sort its levels, rather than ‘sort.list()’. This allows ‘factor()’ to support custom vector-like objects if methods for the appropriate generics are defined. It has the side effect of making ‘factor()’ succeed on empty or length-one non-atomic vector(-like) types (e.g., ‘"list"’), where it failed before.
‘tempdir(check = TRUE)’ recreates the ‘tempdir()’ directory if it is no longer valid (e.g. because some other process has cleaned up the ‘/tmp’ directory).
There is now a ‘[’ method for class ‘"DLLInfoList"’.
If ‘--default-packages’ is not used, then ‘Rscript’ now checks the environment variable ‘R_SCRIPT_DEFAULT_PACKAGES’. If this is set, then it takes precedence over ‘R_DEFAULT_PACKAGES’. If default packages are not specified on the command line or by one of these environment variables, then ‘Rscript’ now uses the same default packages as ‘R’. For now, the previous behavior of not including ‘methods’ can be restored by setting the environment variable ‘R_SCRIPT_LEGACY’ to ‘yes’.
‘sum(x)’ and ‘sum(x1,x2,..,x<N>)’ with many or long logical or integer vectors no longer overflows (and returns ‘NA’ with a warning), but returns ‘double’ numbers in such cases.
Single components of ‘"POSIXlt"’ objects can now be extracted and replaced via ‘[’ indexing with 2 indices.
Arithmetic sequences created by ‘1:n’, ‘seq_along’, and the like now use compact internal representations via the ‘ALTREP’ framework. Coercing integer and numeric vectors to character also now uses the ‘ALTREP’ framework to defer the actual conversion until first use.
‘NAMEDMAX’ has been raised to 3 to allow protection of intermediate results from (usually ill-advised) assignments in arguments to ‘BUILTIN’ functions. Package ‘C’ code using ‘SET_NAMED’ may need to be revised.
the undocumented "hidden" ‘.__H__.cbind’ and ‘.__H__.rbind’ are
deprecated, correspondingly.
‘methods:::bind_activation()’ is defunct now; it typically has been unneeded for years.
The undocumented ‘hidden’ objects ‘.__H__.cbind’ and ‘.__H__.rbind’ in package ‘base’ are deprecated (in favour of ‘cbind’ and ‘rbind’).
‘NAMEDMAX’ has been raised to 3 to allow protection of intermediate
results from (usually ill-advised) assignments in arguments to
‘BUILTIN’ functions. Package ‘C’ code using ‘SET_NAMED’ may need to be
revised.
Arithmetic with zero-column data frames now works more consistently; issue raised by Bill Dunlap.
Arithmetic with data frames gives a data frame for ‘^’ (which previously gave a numeric matrix).
‘aggregate(<data.frame>, drop=FALSE)’ no longer calls the function on <empty> parts but sets corresponding results to ‘NA’. Tthanks to Suharto Anggono's patches in PR#17280).
‘read.table()’ with a non-default separator now supports quotes following a non-whitespace character, matching the behavior of ‘scan()’.
‘Sys.timezone()’ tries more heuristics on Unix-alikes and so is more likely to succeed (especially on Linux). For the slowest method, a warning is given recommending that ‘TZ’ is set to avoid the search.
The version of LAPACK included in the sources has been updated to 3.8.0 (for the routines used by R, a very minor bug-fix change).
‘parallel::detectCores(logical = FALSE)’ is ignored on Linux systems, since the information is not available with virtualized OSes.
‘configure’ will use ‘pkg-config’ to find the flags to link to ‘jpeg’ if available (as it should be for the recently-released ‘jpeg-9c’ and ‘libjpeg-turbo’). (This amends the code added in R 3.3.0 as the module name in ‘jpeg-9c’ is not what that tested for.)
‘Sys.timezone(location = FALSE)’ (which was a stop-gap measure for Windows long ago) is deprecated. It no longer returns the value of environment variable ‘TZ’ (usually a location).
Legacy support of ‘make’ macros such as ‘CXX1X’ is formally deprecated: use the ‘CXX11’ forms instead.
‘power.prop.test()’ now warns when it cannot solve the problem, typically because of impossible constraints. (PR#17345)
‘removeSource()’ no longer erroneously removes ‘NULL’ in certain cases, thanks to Dénes Tóth.
‘nls(`NO [mol/l]` ~ f(t))’ and ‘nls(y ~ a)’ now work. (Partly from PR#17367)
‘R CMD build’ checks for GNU ‘cp’ rather than assuming Linux has it. (PR#17370 says ‘Alpine Linux’ does not.)
Non-UTF-8 multibyte character handling fixed more permanently (PR#16732).
‘sum(<large ints>, <stuff>)’ is more consistent. (PR#17372)
‘rf()’ and ‘rbeta()’ now also work correctly when ‘ncp’ is not scalar, notably when (partly) ‘NA’. (PR#17375)
‘is.na(NULL)’ no longer warns. (PR#16107)