I've rolled up R-1.5.0.tgz a short while ago. This is a major upgrade, with several new features. A few of the changes generate compatibility issues. You may wish to consult http://developer.r-project.org/150update.txt. A set of recommended packages which have been tested with R-1.5.0 has been bundled up. Binary distributions are expected to include these packages. You can get the files from the developer site ftp://cvs.r-project.org/pub/CRAN/src/base/R-1.5.0.tgz ftp://cvs.r-project.org/pub/CRAN/src/base/R-1.5.0-recommended.tgz or http://cvs.r-project.org/pub/CRAN/src/base/R-1.5.0.tgz http://cvs.r-project.org/pub/CRAN/src/base/R-1.5.0-recommended.tgz or wait for them to be mirrored at a CRAN site near you. Binaries for various platforms will appear in due course. There are also versions split for floppies. For the R Core Team, Peter D. Here's the relevant part of the NEWS file: CHANGES IN R VERSION 1.5.0 USER-VISIBLE CHANGES o XDR support is now guaranteed to be available, so the default save format will always be XDR binary files, and it is safe to distribute data in that format. (We are unaware of any platform that did not support XDR in recent versions of R.) gzfile() is guaranteed to be available, so the preferred method to distribute sizeable data objects is now via save(compress = TRUE). o pie() replaces piechart() and defaults to using pastel colours. o formatC has new arguments (see below) and formatC(*, d = <dig>) is no longer valid and must be written as formatC(*, digits = <dig>). o Missingness of character strings is treated much more consistently, and the character string "NA" can be used as a non-missing value. o summary.factor() now uses a stable sort, so the output will change where there are ties in the frequencies. NEW FEATURES o Changes in handing missing character strings: - "NA" is no longer automatically coerced to a missing value for a character string. Use as.character(NA) where a missing value is required, and test via is.na(x) not x == "NA". String "NA" is still converted to missing by scan() and read.table() unless `na.strings' is changed from the default. - A missing character string is now printed as `NA' (no quotes) amongst quoted character strings, and `<NA>' if amongst unquoted character strings. - axis() and text.default() omit missing values of their `labels' argument (rather than plotting "NA"). - Missing character strings are treated as missing much more consistently, e.g. in logical comparisons and in sorts. identical() now differentiates "NA" from the missing string. o Changes in package methods: - New function validSlotNames(). - Classes can explicitly have a "data part", formally represented as a .Data slot in the class definition, but implemented consistently with informal structures. While the implementation is different, the user-level behavior largely follows the discussion in "Programming with Data". - A "next method" facility has been provided, via the function callNextMethod(). This calls the method that would have been selected if the currently active method didn't exist. See ?callNextMethod(). This is an extension to the API. - Classes can have initialize methods, which will be called when the function new() is used to create an object from the class. See ?initialize. This is an extension to the API. - The logic of setGeneric() has been clarified, simplifying nonstandard generic functions and default methods. o Changes in package tcltk: - Now works with the GNOME user interface. - Several new functions allow access to C level Tcl objects. These are implemented using a new `tclObj' class, and this is now the class of the return value from .Tcl() and tkcmd(). o Changes in package ts: - More emphasis on handling time series with missing values where possible, for example in acf() and in the ARIMA-fitting functions. - New function arima() which will replace arima0() in due course. Meanwhile, arima0() has been enhanced in several ways. Missing values are accepted. Parameter values can be initialized and can held fixed during fitting. There is a new argument `method' giving the option to use conditional-sum-of-squares estimation. - New function arima.sim(). - New datasets AirPassengers, Nile, UKgas and WWWusage, and a expanded version of UKDriverDeaths (as a multiple time series Seatbelts). - New generic function tsdiag() and methods for arima and arima0, to produce diagnostic plots. Supersedes arima0.diag(). - New functions ARMAacf() and ARMAtoMA() to compute theoretical quantities for an ARMA process. - New function acf2AR() to compute the AR process with a given autocorrelation function. - New function StructTS() to fit structural time series, and new generic function tsSmooth() for fixed-interval state-space smoothing of such models. - New function monthplot() (contributed by Duncan Murdoch). - New functions decompose() and HoltWinters() (contributed by David Meyer) for classical seasonal decomposition and exponentially-weighted forecasting. o An extensible approach to safe prediction for models with e.g. poly(), bs() or ns() terms, using the new generic function makepredictcall(). Used by most model-fitting functions including lm() and glm(). See ?poly, ?cars and ?ns for examples. o acosh(), asinh(), atanh() are guaranteed to be available. o axis() now omits labels which are NA (but still draws the tick mark. o Connections to bzip2-ed files via bzfile(). o chol() allows pivoting via new argument `pivot'. o cmdscale() now takes rownames from a dist object `d' as well as from a matrix; it has new arguments `add' (as S) and `x.ret'. o crossprod() handles the case of real matrices with y = x separately (by accepting y = NULL). This gives a small performance gain (suggestion of Jonathan Rougier). o deriv/deriv3() can now handle expressions involving pnorm and dnorm (with a single argument), as in S-PLUS. o New function expm1() both in R and in C API, for accurate exp(x)-1; precision improvement in pexp() and pweibull() in some cases. (PR#1334-5) o New function findInterval() {using new C entry point findInterval, see below}. o formatDL() now also works if both items and descriptions are given in a suitable list or matrix. o gzfile() is guaranteed to be available, and hence the `compress' option to save() and save.image(). o hist() now has a method for date-time objects. o library() now checks the dependence on R version (if any) and warns if the package was built under a later version of R. o library(help = PKG) now also returns the information about the package PKG. o Added function logb(), same as log() but for S-PLUS compatibility (where log now has only one argument). o New na.action function na.pass() passes through NAs unaltered. o piechart() has been renamed to pie(), as piechart is a Trellis function for arrays of pie charts. The default fill colours are now a set of pastel shades, rather than par("bg"). o plclust() in package mva, for more S-PLUS compatibility. o poly() now works with more than one vector or a matrix as input, and has a predict method for objects created from a single vector. o polyroot() now handles coefficient vectors with terminal zeroes (as in S). o New prettyNum() function used in formatC() and format.default() which have new optional arguments `big.mark', `big.interval', `small.mark', `small.interval', and `decimal.mark'. o print.coefmat() has a new argument 'eps.Pvalue' for determining when small P-values should be printed as "< {...}". o The recover() function has been moved to the base package. This is an interactive debugging function, usually a good choice for options(error=). See ?recover. o rep() has a new argument `each' for S-PLUS compatibility. The internal call is made available as rep.int(), again for help in porting code. o New functions rowSums(), colSums(), rowMeans() and colMeans(): versions of apply() optimized for these cases. o rug() now has a "..." argument allowing its location to be specified. o scan() can have NULL elements in `what', useful to save space when columns need to be discarded. o New option by = "DSTday" for seq.POSIXt(). o Changes to sorting: - sort(), sort.list() and order() have a new argument `decreasing' to allow the order to be reversed whilst still preserving ties. - sort() has an option to use quicksort in some cases (currently numeric vectors and increasing order). - The default Shell sort is Sedgewick's variant, around 20% faster, and pre-screening for NAs speeds cases without any NAs several-fold. - sort.list() (and order with just one vector) is several times faster for numeric, integer and logical vectors, and faster for character vectors. o New assignment forms of split(); new function unsplit(). o New sprintf() function for general C like formatting, from Jonathan Rougier. o Argument `split' of summary.{aov,aovlist} is now implemented. o summary.princomp() now has a separate print() method, and `digits' is now an argument to the print method and not to summary.princomp itself. o An extended version of the trace() function is available, compatible with the function in S-PLUS. Calls to R functions can be inserted on entry, on exit, and before any subexpressions. Calls to browser() and recover() are useful. See ?trace. o New function TukeyHSD() for multiple comparisons in the results of aov(). (Formerly function Tukey in package Devore5 by Douglas Bates.) o New read-only connections to files in zip files via unz(). o warning() has new argument `call.', like stop()'s. o zip.file.extract() is no longer provisional and has an "internal" method available on all platforms. o Methods for [, [<- and as.data.frame() for class "POSIXlt". o Much improved printing of matrices and arrays of type "list". o The "Knuth-TAOCP" option for random-number generation has been given an option of using the 2002 revision. See ?RNG for the details: the R usage already protected against the reported `weakness'. o min/max of integer(0) (or NULL) is now Inf/-Inf, not an extreme integer. DEPRECATED & DEFUNCT o .Alias, reshapeLong(), reshapeWide() are defunct. o arima0.diag() (package ts) is deprecated: use tsdiag() instead. o piechart() is deprecated; renamed to pie(). DOCUMENTATION CHANGES o `Writing R Extensions' now has an example of calling R's random numbers from FORTRAN via C. o R itself and all R manuals now have ISBN numbers, please use them when citing R or one of the manuals. INSTALLATION CHANGES o The configure script used when building R from source under Unix is now generated using Autoconf 2.50 or later, which has the following 'visible' consequences: - By default, configure no longer uses a cache file. Use the command line option '--config-cache' (or '-C') to enable caching. - Key configuration variables such as 'CC' are now *precious*, implying that the variables * no longer need to be exported to the environment and can and should be set as command line arguments; * are kept in the cache even if not specified on the command line, and checked for consistency between two configure runs (provided that caching is used, see above); * are kept during automatic reconfiguration as if having been passed as command line arguments, even if no cache is used. See the variable output section of 'configure --help' for a list of all these variables. o Configure variable 'FC' is deprecated, and options '--with-g77', '--with-f77' and '--with-f2c' are defunct. Use configure variable 'F77' to specify the FORTRAN 77 compiler, and 'F2C' to specify the FORTRAN-to-C compiler and/or that it should be used even if a FORTRAN 77 compiler is available. o Non-standard directories containing libraries are specified using configure variable 'LDFLAGS' (not 'LIBS'). UTILITIES o Sweave(), Stangle() and friends in package tools. Sweave allows mixing LaTeX documentation and R code in a single source file: the R code can be replaced by its output (text, figures) to allow automatic report generation. Sweave files found in package subdir 'inst/doc' are automatically tested by R CMD check and converted to PDF by R CMD build, see the section on package vignettes in the 'Writing R Extensions' manual. o Rdconv can convert to the S4 '.sgml' format. o R::Utils.pm masks some platform dependencies in perl code by providing global variables like R_OSTYPE or wrapper functions like R_runR(). o If a directory 'inst/doc' is present in the sources of a package, the HTML index of the installed package has a link to the respective subdirectory. o R CMD check is more stringent: it now also fails on malformed 'Depends' and 'Maintainer' fields in 'DESCRIPTION' files, and on unbalanced braces in Rd files. It now also provides pointers to documentation for problems it reports. o R CMD check, build and INSTALL produce outline-type output. o QA functions in package 'tools' now return the results of their computations as objects with suitable print() methods. By default, output is only produced if a problem was found. o New utility R CMD config to get the values of basic R configure variables, or the header and library flags necessary for linking against R. o Rdindex and maketitle.pl require perl 5.005, as Text::Wrap::fill was only introduced at 5.004_05. C-LEVEL FACILITIES o All the double-precision BLAS routines are now available, and package writers are encouraged not to include their own (so enhanced ones will be used if requested at configuration). o findInterval(xt[],n,x,...) gives the index (or interval number) of x in the sorted sequence xt[]. There's an F77_SUB(interv)(.) to be called from Fortran; this used to be part of predict.smooth.spline's underlying Fortran code. o Substitutes for (v)snprintf will be used if the OS does not supply one, so tests for HAVE_(V)SNPRINTF are no longer needed. o The DUP and NAOK arguments in a .C() call are not passed on to the native routine being invoked. Any code that relied on the old behaviour will need to be modified. o log1p is only provided in Rmath.h if it is not provided by the platform, in which case its name is not remapped, but a back-compatibility entry point Rf_log1p is provided. Applications using libRmath may need to be re-compiled. o The methods used by optim() and integrate() have entry points in R_ext/Applic.h and have a more general interface documented in `Writing R Extensions'. o The bessel_? entry points are now suitable to be called repeatedly from code loaded by .C(). (They did not free memory until .C() returned in earlier versions of R.) o Server sockets on non-Windows platforms now set the SO_REUSEADDR socket option. This allows a server to create simultanous connections to several clients. o New quicksort sorting (for numeric no-NA data), accessible from C as R_qsort() etc and from Fortran as qsort4() and qsort3(). o Rinternals.h no longer includes fcntl.h, as this is not an ISO C header and cannot be guaranteed to exist. o Fortran subroutines are more correctly declared as `extern void' in R_exts/Applic.h and R_exts/Linpack.h. BUG FIXES o The calculation of which axes to label on a persp() plot was incorrect in some cases. o Insufficient information was being recorded in the display list for the identify() function. In particular, the "plot=" argument was ignored when replaying the display list. (PR#1157) o The vertical alignment of mathematical annotations was wrong. When a vertical adjustment was not given, it was bottom-adjusting i.e,. it was treating adj=0 as adj=c(0, 0). It now treats adj=0 as adj=c(0, 0.5) as for "normal" text. (PR#1302) o the man page (doc/R.1) wasn't updated with the proper VERSION. o smooth.spline() had a "df = 5" default which was never used and hence extraneous and misleading. o read.fwf() was interpreting comment chars in its call to scan: replaced by a call to readlines(). (PR#1297/8) o The default has been changed to scan(comment.char="") for consistency with earlier code (as in the previous item). o bxp(*, notch.frac = f) now draws the median line correctly. o Current versions of gs were rotating the output of bitmap(type = "pdfwrite") and when converting the output of postscript() to PDF; this has been circumvented by suppressing the %%Orientation comment for non-standard paper sizes. o plot.ts(x, log = "y") works again when x has 0s, also for matrix x. o add1(), drop1(), step() work again on glm objects with formulae with rhs's containing `.'. (Broken by a `bug fix' (in reality an API change) in 1.2.1.) o optim(method="BFGS") was not reporting reaching `maxit' iterations in the convergence component of the return value. o aov() and model.tables() were failing on multistrata models with excessively long Error formula. (PR#1315) o Transparent backgrounds on png() devices on Unix-alikes had been broken during the driver changes just prior to 1.4.0. (They worked correctly on Windows.) o demo(is.things) didn't work properly when the methods package was attached. o match(), unique() and duplicated() were not declaring all NaNs to be equal, yet not always distinguishing NA and NaN. This was very rare except for data imported as binary numbers. o The error handler recover() protects itself against errors in dump.frames and uses a new utility, limitedLabels, to generate names for the dump that don't inadvertently blow the limit on symbol length. (TODO: either fix dump.frames accordingly or remove the limit--say by truncating very long symbols?) o se.contrasts() works more reliably with multistratum models, and its help page has an example. o summary.lm() was not returning r.squared nor adj.r.squared for intercept-only models, but summary.lm.null() was returning r.squared but not adj.r.squared. Now both are always returned. Neither returned f.statistic, and that is now documented. o Subsetting of matrices of mode list (or other non-atomic modes) was not implemented and gave incorrect results without warning. (PR#1329) Under some circumstances subsetting of a character matrix inserted NA in the wrong place. o abs() was not being treated as member of the Math group generic function, so e.g. its method for data frames was not being used. o set.seed(seed, "default") was not using the `seed' value (only for kind = "default"). o logLik.lm() now uses "df = p + 1" again (`+ sigma'!). o logLik.glm() was incorrect for families with estimated dispersion. o Added strptime() workaround for those platforms (such as Solaris) that returned missing components as 0. Missing days are now detected, but missing years will still be interpreted as 1900 on such platforms. o Inheritance in formal classes (the methods package) works breadth-first as intuition would expect. o The new() function in package `methods' works better (maybe even correctly?) for the various combinations of super-classes and prototypes that can be supplied as unnamed arguments. o Internal code allowed one more connection to be allocated than the table size, leading to segfaults. (PR#1333) o If a user asks to open a connection when it is created and it cannot be opened, the connection is destroyed before returning from the creation call. (related to PR#1333) o Sys.putenv() was not using permanent storage. (PR#1371) o La.svd() was not coercing integer matrices. (PR#1363) o deriv(3) now reports correctly the function it cannot find the derivatives table. o The GNOME user interface was over-enthusiastic about setting locale information. Now only LC_CTYPE, LC_COLLATE and LC_TIME are determined by the user's environment variables (PR#1321) o In X11, locator() would sound the bell even if "xset b off" had been set. o merge() could be confused by inconsistent use of as.character() giving leading spaces. o [pqr]binom() no longer silently round the `size' argument, but return NaN (as dbinom() does). (PR#1377) o Fixed socket writing code to block until all data is written. Fixed socket reading code to properly handle long reads and reads with part of the data in the connection buffer. o Allow sockets to be opened in binary mode with both open="ab" and open="a+b". o levels<-.factor() was using incorrectly list values longer than the number of levels (PR#1394), and incorrectly documented that a character value could not be longer than the existing levels. o The pdf() device was running out of objects before the documented 500 page limit. Now there is no limit. o legend() did not deal correctly with `angle' arguments. (PR#1404) o sum() tried to give an integer result for integer arguments, but (PR#1408) - this was not documented - it sometimes warned on overflow, sometimes not - it was order-dependent for a mixture of integer and numeric args. o mean() gave (numeric) NA if integer overflow occurred in sum(), but now always works internally with numeric (or complex) numbers. o sort.list() and order() were treating NA_STRING as "NA". o sort.list(na.last = NA) was not implemented. o seq.default() was returning only one element for a relative range of less than about 1e-8, which was excessively conservative. (PR#1416) o tsp(x) <- NULL now also works after library(methods). o persp(shade=) was not working correctly with the default col=NULL if this was transparent. (PR#1419) o min/max(complex(0)) was returning a random value. o range() gave c(1, 1). o range(numeric(0)) is now c(Inf, -Inf), as it was documented to be. o print.ts() was occasionally making rounding errors in the labels for multiple calendar time series. o Rdconv was not handling nested \describe{} constructs when converting to HTML (PR#1257) and not fixing up mal-formed \item fields in \describe{} when converting to text (PR#1330). o filled.contour() was not checking consistency of x, y, z. (PR#1432) o persp.default() no longer crashes with non-character labels. (PR#1431) o fft() gave incorrect answers for input sizes 392, 588, 968, 980 .... (PR#1429) o det(method = "qr") gave incorrect results for numerically singular matrices. (PR#1244) o barplot() now allows the user to control `xpd'. (PR#1088, 1398) o library() (with no arguments) no longer fails on empty TITLE files. o glm() was failing if both offset() and start were specified. (PR#1421) o glm() might have gotten confused if both step-shortening and pivoting had occurred (PR#1331). Step-halving to avoid the boundary of feasible values was not working. o Internal representation of logical values was not being treated consistently. (Related to PR#1439) o The c() function sometimes inserted garbage in the name vector for some types of objects, e.g. names(c(ls, a=1)). o Fixed bug in `$' that could cause mutations on assignment (PR#1450). o Some X servers displayed random bytes in the window title of graphics windows (PR#1451) o The X11 data editor would segfault if closed with window manager controls (PR#1453) o Interrupt of Sys.sleep() on UNIX no longer causes subsequent Sys.sleep() calls to segfault due to infinite recusion. o Eliminated a race condition that could cause segfaults when a SIGINT was received while handling an earlier SIGINT. o rect(lty = "blank") was incorrectly drawing with a dashed line. o type.convert() was not reporting incorrectly formatting complex inputs. (PR#1477) o readChar() was not resetting vmax, so causing memory build-up. (PR#1483) -- O__ ---- Peter Dalgaard Blegdamsvej 3 c/ /'_ --- Dept. of Biostatistics 2200 Cph. N (*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918 ~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk) FAX: (+45) 35327907 -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.- r-announce mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html Send "info", "help", or "[un]subscribe" (in the "body", not the subject !) To: r-announce-request at stat.math.ethz.ch _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._