R-1.5.0 is released

Peter Dalgaard BSA p.dalgaard at biostat.ku.dk
Mon Apr 29 13:25:13 CEST 2002


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
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._



More information about the R-announce mailing list