R-1.6.0 is released

Peter Dalgaard BSA p.dalgaard at biostat.ku.dk
Tue Oct 1 14:01:04 CEST 2002



I've rolled up R-1.6.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/160update.txt.

We no longer ship the set of recommended packages separately, but
bundle them up with the main distribution. Thus there is now only a
single file to fetch and (barring special platform issues) you should
be able to get going by unpacking the sources and entering

./configure
make
make install

You can get it from the developer site

ftp://cvs.r-project.org/pub/CRAN/src/base/R-1.6.0.tgz

or

http://cvs.r-project.org/pub/CRAN/src/base/R-1.6.0.tgz

or wait for it to be mirrored at a CRAN site near you. Binaries for
various platforms will appear in due course. (Notice that the machine
which hosts cvs.r-project.org had a hardware problem last week, so the
service may be slightly unreliable. Unfortunately, this also affects
some CRAN mirrors since they are redirected through the same machine.)

There is also a version split for floppies.


        For the R Core Team,

        Peter D.


Here's the relevant part of the NEWS file:


		CHANGES IN R VERSION 1.6.0


USER-VISIBLE CHANGES

    o	The default colour palette now has "grey" instead of "white"
	in location 8.	See palette().

    o	grid(nx) behaves differently (but the same as in R versions <= 0.64).


NEW FEATURES

    o	New operator :: in the grammar, for name spaces.

    o	New faster rowsum(), also works on data frames.

    o	grep(), (g)sub() and regexpr() have a new argument `perl'
	which if TRUE uses Perl-style regexps from PCRE (if installed).
	New capabilities option "PCRE" to say if PCRE is available.

    o	Preparations for name space support:

	- Functions in the base package are now defined in a name space.
	  As a temporary measure, you can disable this by defining the
	  environment variable R_NO_BASE_NAMESPACE.

	- UseMethod dispatching now searches for methods in the
	  environment of the caller of the generic function rather
	  than the environment where the generic is defined.

    o	The objects created in the methods package to represent
	classes, generic functions, method definitions, and
	inheritance relations now themselves belong to true classes.  In
	particular, the "classRepresentation" objects follow the description
	in "Programming with Data" (section 7.6).

    o	Other additions and changes to the methods package:

	- The function setOldClass() has been added, following the
	  description on page 450 of "Programming with Data".  Use it
	  if old-style classes are to be supplied in signatures for
	  setMethod, particularly if the old-style classes have
	  inheritance.	Many of the old-style classes in the base
	  package should be pre-specified; try getClass("mlm"), e.g.

	- The setGeneric() function applies some heuristics to warn
	  about possibly erroneous generic function definitions.
	  (Before, obscure bugs could result.)

	- The function promptMethods() has been revised to work better
	  and to provide aliases for individual methods.

	- The behavior of the as() function has been generalized, in
	  particular with a strict= argument, the general goal being
	  to let simple extensions of classes pass through in method
	  dispatch and related computations without altering the
	  objects. More to make method behavior more "natural" than
	  for direct use.

	- Some inconsistencies following detach("package:methods")
	  have been removed, so it _should_ be possible to
	  detach/re-attach the methods package.

    o	New methods ([[, print, str) and extended plot() method
	(incl. logical `horiz') for "dendrogram" class.

    o	sprintf() now checks the agreement between formats and object
	types, and handles special values (NA, Inf, ...) correctly.

    o	chol() now uses a tolerance for non-positive-definiteness and
	so should give more consistent results across platforms.

    o	New function agrep() for approximate (fuzzy) string matching.

    o	help.search() can now use both approximate (fuzzy) and regular
	expression matching.  By default, if the pattern to be matched
	consists of only alphanumeric characters, whitespace or a dash,
	approximate matching is used.

    o	axis() has three new optional arguments `col', `lty', and `lwd'
	all for drawing the axis line and tick marks.

    o	Function vcov() (formerly in MASS), a generic function to
	return the variance-covariance matrix of the parameter
	estimates of a fitted model.

    o	duplicated() and unique() have methods for matrices and arrays
	(based on ideas from Jens Oehlschlägel).

    o	Internally memory sizes and counts of cons cells are now stored
	in unsigned longs.  This allows memory limits to be set and
	objects created in the range 2-4Gb on 32-bit platforms, and
	allows 64-bit platforms to use much larger amounts of memory.

    o	Command-line flags to set memory can now use the suffix `G'
	for gigabytes.	The setting of maximum vsize is now only
	limited by the platform's address space.

    o	All warning and error messages are truncated to a length set
	by options(warning.length=), defaulting to 1000.  (Previously
	most (but not quite all) were truncated at 8192 characters.)

    o	[dpqr]gamma() check for shape parameter > 0.

    o	as.POSIX[cl]t can now convert logical NAs.

    o	All installed packages (even those shipped with R) are
	given a `Built' field in the DESCRIPTION file.

    o	as.data.frame() now coerces logical matrices into logical
	columns (rather than factors).

    o	[[<-.data.frame no longer coerces character replacement values
	to factor.  This is consistent with using $ to replace and
	with S4.

    o	library() attempts to detect improperly installed packages, so
	as from this version an installed package must have a
	DESCRIPTION file and that file must have been stamped with a
	`Built:' line (which was introduced in 1.2.0).	Under
	Unix-alikes, the platform is checked against that used for
	installation.

    o	print.factor() has new arguments `max.levels' (with a smart default)
	and `width'.  print.ordered() is no longer needed.

    o	RNGkind() has an additional option for normal random generators:
	"Inversion".

    o	data.frame() recycles factors and "AsIs" objects as well as
	atomic vectors.

    o	predict.lm() warns if `newdata' is supplied and the fit was
	rank-deficient, as this can be misleading.

    o	rect() accepts additional graphics parameters through a ...
	argument (in the same way as polygon).

    o	strwidth/strheight() now coerce their first argument in exactly
	the same way text() does, so a wider range of inputs is allowed.

    o	prompt()'s default and data.frame methods have a new 3rd argument
	`name' allowing them to used more easily in scripts and loops.

    o	rgb() has a new `maxColorValue' argument, allowing r,g,b in [0,M],
	particularly in {0:255}, efficiently and non-error-prone.

    o	summaryRprof() provides the functionality of R CMD Rprof in R
	code, though more slowly.

    o	stop() accepts multiple arguments (which are concatenated)
	just as warning() does.

    o	scan() now throws an error with incorrect logical input (which
	was previously taken as FALSE).

    o	pdf() now uses PDF not R code for clipping, which ensures that
	partially visible text strings are (partially) shown.

    o	Each R session uses a per-session temporary directory which
	is removed at normal termination.  The directory name is given
	by the tempdir() function, and filenames returned by
	tempfile() will be within that directory.

    o	help.start() on Unix now uses a .R subdirectory of the
	per-session temporary directory and not ~/.R.  A side effect
	is that ~/.R is now never deleted by R.

	This now uses the remote control mechanism only if the X
	display is local to the R process (as otherwise it might use a
	browser running on an arbitrary machine).

    o	*Very* experimental browseEnv() for browsing objects in an
	environment.

    o	cbind/rbind() used to ignore all zero-length vectors, an
	undocumented quirk for S-compatibility.	 This caused problems
	when combining zero-extent matrices and zero-length vectors, and
	now zero-length vectors are ignored unless the result would
	have zero rows/columns.

    o	read.table(stdin()) will now work.

    o	plot.spec(x) now also works for other x than AR and Pgram results.

    o	New functions La.chol() and La.chol2inv() for Cholesky
	decomposition and inverse of positive definite matrices using
	Lapack.

    o	Changes to the tcltk package

	- on Unix systems, the Tcl event loop has been integrated with
	  R's own (so that tkwait.variable() no longer halts updates of
	  plot windows).

	- also on Unix, stubs have been created to divert R's input
	  and output routines to go via Tcl commands. (Nothing
	  uses this at present, but packages might be developed to
	  take advantage of it.)

	- return value from Tcl commands is no longer invisible. A new
	  print method, print.tclObj(), has been introduced.

	- Tcl variables created by tclVar() are now explicitly put into
	  Tcl's global namespace, removing potential scoping problems.

	- The tcltk dynamic library now loads with local=FALSE since
	  the default had trouble when loading Tcl extensions
	  (e.g. Tix)

	- The tkpager() function had not been updated for the return
	  value change from 1.5.0

    o	The bmp(), jpeg() and png() devices can produce multiple
	bitmap files, one for each page.  The default filenames have been
	changed to include a sequence number.

    o	New function axTicks() returning tick mark locations like axis().

    o	grid() has a more sensible default behavior.  Tick axis alignment
	only happens when no numbers of grid cells are specified.  New
	arguments lwd and equilogs; nx/ny = NA for not drawing, see ?grid.

    o	installed.packages() has a new argument `priority'.

    o	termplot() uses factor levels rather than 1,2,3... for x-axis.

    o	Workaround for optimization bugs on gcc 3.1/2 on 32-bit Solaris.

    o	The trace() function has been robustified and a new function
	tracingState() added to turn tracing temporarily on and off.

    o	New cophenetic() in "mva" as utility for hierarchical clustering.

    o	p.adjust() has two new methods, 'Hommel' and 'FDR', contributed
	by Gordon Smyth <smyth at wehi.edu.au>.

    o	stars() now has add and plot arguments.


DEPRECATED & DEFUNCT

    o	The assignment operator `_' is deprecated: a warning is	given
	once per R session.

    o	machine() is deprecated in favour of .Platform$OS.type.
	Machine() and Platform() are deprecated in favour of .Machine
	and .Platform.

    o	arima0.diag() (package ts) is defunct.

    o	piechart() is defunct.

    o	print.ordered() has been removed, so print.factor() is used.

    o	The global internal variables .Dyn.libs and .lib.loc are
	removed in favor of the internal functions .dynLibs() and
	.libPaths().

    o	restart() is deprecated in preparation for proper exception
	handling.  Use try(), as has long been recommended.


DOCUMENTATION CHANGES

    o	New demo(persp) containing some of the former example(persp) ones
	and more.


C-LEVEL FACILITIES

    o	Rversion.h is no longer automatically included by R.h.
	Include it explicitly if you need it.

    o	New entry point R_tmpnam in Utils.h.

    o	The Unix event loop interface has been changed to facilitate
	integration with other loops. R_checkActivity and
	R_runHandlers should eventually replace getSelectedHandler.


INSTALLATION CHANGES

    o	Perl 5.005 or newer is now required.

    o	R CMD INSTALL is now guaranteed to sort the R source files in
	ASCII order.


UTILITIES

    o	R CMD check now tests for mis-use on an installed or binary
	package, and sets 'T' and 'F' to 'NULL' when running the
	examples.

    o	New function SweaveSyntConv() converts between Sweave file
	syntaxes. RweaveLatex() now gets its prompt from options() and
	uses the text width as linebreak cutoff for deparsing input
	statements.


BUG FIXES

    o	axis() was not respecting par("mgp")[3] by default.
	(PR#916)

    o	tcltk back-compatibility fix for tcl8.0

    o	hist.POSIXct(*, breaks) now works for `breaks = #{breaks}' and
	when `x' has NAs; the latter applies to cut.POSIXct() as well.

    o	The internal download.file() methods were setting the proxy
	port to 0 unless it was specified.

    o	poly() did not work for >=3 column matrices.

    o	cut.default() was not handling infinite values with infinite
	breaks.	 (PR#1694)

    o	ks.test() could fail due to integer overflow if n.x and n.y
	were both large.

    o	all.equal(3., 3:3) wasn't TRUE when the methods package was
	present.

    o	read.table() could remap non-syntactic names to duplicates,
	and did not check for duplicated names.

    o	ls.str(envir = environment(F)) now works (when F is a function).

    o	pie() now has a `border' (and 'lty') argument which allows empty
	slice borders and makes pie() useable for hundreds of slices.

    o	all.equal.character() now works correctly also when NAs don't
	match (PR#1767).

    o	all.equal.numeric() now gives character {instead of list} when
	lengths don't match.

    o	read.dcf() had a memory leak.

    o	Setting "tcl = a" in a highlevel graphic function worked almost
	as if par(tcl = a) was called (i.e. was persistent).  Further,
	after par(tcl= <.>), highlevel graphic setting of tcl didn't work
	anymore.  "tck" has now S's default of -0.01 (when tcl=NA).

    o	data() was not checking if ./data was a directory before
	warning.

    o	Assignment beyond the end of character strings was filling
	with "", whereas changing the length extended with NA_STRING.
	Now NA_STRING is used for both.

    o	boxplot()s with logarithmic scale in "width-direction" now have
	proper widths, i.e. typically constant.

    o	Using GNU readline in asynchronous event callbacks (e.g. TclTk
	or Gtk) works correctly, i.e. doesn't cause readline to abort
	the process.

    o	Using Q to exit a browser invoked at the top-level could lead to
	the browser being invoked on all future top-level loops (PR#1721)

    o	step(fit, direction="both") now uses both directions even if
	no scope is supplied.

    o	strwidth(), strheight() now give 0 on NA strings (as they
	are no longer plotted). (PR#1739)

    o	mtext(), persp(), plot.hclust() and title() no longer plot NA
	character strings.

    o	pdf() has been protected against the user who specified
	non-existent fonts. (PR#1748)

    o	dlnorm() returns zero for negative x argument. (PR#1781)

    o	Printing 0 in octmode gave "" not "0". (PR#1759)

    o	anova.glm() was ignoring a `dispersion' argument if given
	multiple objects. (PR#1807)

    o	model.matrix() with a `rhs ~ .' formula included columns with
	duplicated names in the data frame, which caused subsequent
	confusion (e.g. in prediction from the object).

	model.matrix() was sometimes incorrectly determining the first
	factor in a formula without an intercept.

    o	termplot() now needs data= argument more rarely. (PR#828)

    o	abline() on log scale doesn't draw -ve points. (PR#1243)

    o	The Java search engine now works within Mozilla 1.0 and
	Netscape 6.2.x / 7.0pr1.

    o	unsplit() failed if f was a list of factors. (PR#1843)

    o	The methods package generic version of primitives is now "sealed"
	and cannot be redefined (it was always a bad idea to do so).

    o	quantile() gave -Inf not NaN in some examples. (Related to PR#1852)

    o	read.table() read too far in checking the file structure if
	0 < nrows < 5 and more rows existed on the file. (PR1809)

    o	loess() was not checking for too small a span (so no points
	were included in the smoothing window).

    o	match() was assuming that there was only one possible bit
	pattern for a numeric NA, so some matches failed on Solaris
	under some compiler options.

    o	identical() no longer thinks NaN and as.double(NA) are identical.

    o	pipe() can open in a binary mode even on Linux (where popen
	cannot).

    o	zero-column matrices were not being printed at all, not even
	the row names.

    o	polygon()'s `border' argument was incorrectly documented: in
	particular `border = 0' plots in background colour.

    o	delete.response() was losing the attribute set for safe
	prediction. (PR#1840)

    o	poly() was checking the degree against the number of points
	even when predicting.

    o	Comparison of a data frame and list failed due to typo. (PR#1889)

    o	dput() and dump() attempt to check if writing succeeded. (PR#1884)

    o	rep(1:2, 0) and hence array(1:2, 0) fail no longer.

    o	apply(matrix("", 3, 0), 2, length) now works.

    o	order(na.last = NA, decreasing = TRUE) now sorts in decreasing
	order.	(PR#1906)

    o	order(na.last=NA) failed if all args were of length 1 or all
	were NA. (PR#1913, 1981)

    o	source() would crash if the `keep.source = TRUE' and the input
	contained a function with a line longer than 1024 chars. (PR#1900)

	The limits on nesting of functions and on total function size
	when the source is kept are now enforced.  As (incorrectly)
	the source was always kept, this meant functions longer than
	128Kb could crash R, even in packages.

    o	lqs() and cov.rob() check that the quantile argument does not
	exceed n-1.

    o	grid() now also works with log coordinates active.

    o	plot.table(tab, xlab="X", ylab="Y") now works as expected.

    o	plot.formula(ask=FALSE) now works. (PR#1923)

    o	as.list(<logical>) now works properly. (PR#1926).

    o	The residual SSq printed from an aov() fit with weights is
	now the weighted SSq.  (PR#1930)

    o	aov() could still fail on multistrata models with very long
	Error formulae.

    o	try() could fail in BATCH use due to use of fflush(stdin).
	Only seen on Solaris. (PR#1934)

   o	title(main=list("main")) printed garbage, as did similar calls
	using quote() instead of expression() for plotmath. (PR#1939)

   o	deparse() dropped parentheses in some case where they were
	needed. (PR#1119, 1737, 1928, at least)

   o	pdf(onefile = FALSE) never incremented the file number beyond
	two.

   o	On Unix, protect against broken pipes where popen calls succeed
	even though the command does not exist (and the glibc manual
	says it should return NULL).  (PR#1959)

   o	data.frame() was allowing explicit row.names with missing
	values, but row names are required to be unique.

   o	as.character(expression) was silently truncating to 60
	characters: the help page claimed 500 which is now true.

   o	as.hclust(x) now also works (as identity) for "hclust" objects.

   o	NextMethod didn't work right in Ops.

   o	dotchart() now obeys `xlim ='.

   o	t(x) behaves when x is a (multivariate) time series. (PR#1998)

   o	parse(text=x) no longer parses from stdin if length(x) is zero

   o	binom.test() miscalculated p-value in some extreme cases

   o	get("print.ts")(1) would segfault. It's now just an error.

   o	cbind(NULL) {and similar} gave an error instead of NULL.

   o	the complex version of solve(a,b) now also works if b is a
        vector


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