From Friedrich.Leisch at ci.tuwien.ac.at Wed Jan 21 12:23:57 2004 From: Friedrich.Leisch at ci.tuwien.ac.at (Friedrich.Leisch at ci.tuwien.ac.at) Date: Wed, 21 Jan 2004 12:23:57 +0100 Subject: R News Volume 3/3 Message-ID: <16398.24909.685006.795255@galadriel.ci.tuwien.ac.at> We have published the 2003/3 issue of R News on http://cran.R-project.org/doc/Rnews where you can download the newsletter as PDF or Postscript file. It will propagate to the CRAN mirrors within a day or two. Contents of this issue: Dimensional Reduction for Data Mapping R as a Simulation Platform in Ecological Modelling Using R for Estimating Longitudinal Student Achievement Models lmeSplines Debugging Without (Too Many) Tears Th R2HTML Package R Help Desk: Package Management Programmer's Niche: Regular Expressions Recent Events Upcoming Events Changes in R 1.8.1 Changes on CRAN R Foundation News For the editorial board, Fritz Leisch -- ------------------------------------------------------------------- Friedrich Leisch Institut f?r Statistik Tel: (+43 1) 58801 10715 Technische Universit?t Wien Fax: (+43 1) 58801 10798 Wiedner Hauptstra?e 8-10/1071 Friedrich.Leisch at ci.tuwien.ac.at A-1040 Wien, Austria http://www.ci.tuwien.ac.at/~leisch From Achim.Zeileis at wu-wien.ac.at Mon Mar 22 20:49:42 2004 From: Achim.Zeileis at wu-wien.ac.at (Achim Zeileis) Date: Mon, 22 Mar 2004 20:49:42 +0100 Subject: useR! 2004 program online Message-ID: <20040322204942.14bdae25.Achim.Zeileis@wu-wien.ac.at> Dear useRs, the program for the first R user conference useR! 2004 (taking place in Vienna, May 20-22) is now available online at the conference web page: http://www.ci.tuwien.ac.at/Conferences/useR-2004/program.html We received many exciting abstracts about a wide spectrum of applications in which R is used. This is reflected in the program and I think we can look forward to a very interesting useR! conference. Note that the early registration deadline is 2004-03-31 so that you can still register as an early bird if you want to visit this event. For the organizing committee, Achim Zeileis, Torsten Hothorn, and David Meyer From bjg at network-theory.co.uk Thu Apr 1 17:12:07 2004 From: bjg at network-theory.co.uk (Brian Gough) Date: Thu, 01 Apr 2004 16:12:07 +0100 Subject: The R Reference Manual - available as a printed book Message-ID: Hello, This message is to announce that the "R Reference Manual" is now available in book form. There are two volumes, which cover all the commands in the base package. They are available for order from all major bookstores. "The R Reference Manual - Base Package" (2 volumes) Hardback (6"x9"), 1440 pages total Retail Price $69.95 per volume ISBN: 0-9546120-0 (vol1), 0-9546120-1-9 (vol2) More information is available from the following webpages: http://www.network-theory.co.uk/R/base/ --- Volume 1 http://www.network-theory.co.uk/R/base2/ --- Volume 2 For each set of manuals sold, $10 will be donated to the R Foundation. regards, -- Brian Gough p.s. All of the money raised from sales of our manuals supports the development of more free software and documentation (see http://www.network-theory.co.uk/about.html for details). Network Theory Ltd -- Publishing Free Software Manuals 15 Royal Park Bristol BS8 3AL United Kingdom Tel: +44 (0)117 3179309 Fax: +44 (0)117 9048108 Web: http://www.network-theory.co.uk/ From p.dalgaard at biostat.ku.dk Mon Apr 12 14:05:25 2004 From: p.dalgaard at biostat.ku.dk (Peter Dalgaard) Date: 12 Apr 2004 14:05:25 +0200 Subject: R 1.9.0 is release Message-ID: I've rolled up R-1.9.0.tgz a short while ago. This is a new version with a number of new features, most notably a substantial reorganization of the standard packages, a major update of the grid package, and the fact that underscore can now be used as a regular character in variable names. See below for further changes. Because of the disturbances at the machine that hosted the CVS archives, you will now have to wait for the file to show up on the CRAN master site. You can then get it from http://cran.r-project.org/src/base/R-1.9.0.tgz or wait for it to be mirrored at a CRAN site nearer to you. Binaries for various platforms will appear in due course. There is also a version split for floppies. These are the md5sums for the freshly created files, in case you wish to check that they are uncorrupted: 79ae9d20a7bed94d7c92504c8c130310 R-1.9.0.tgz de40f2e366d3ed9e2b3e8813fb8bba6c R-1.9.0.tgz-split.aa a963d3ac009ff6c5f321391e26cb0892 R-1.9.0.tgz-split.ab 0e8f55216051057dfafdabc5f578e68e R-1.9.0.tgz-split.ac 7add0d9b6dbd8cdbc36608b7166b910b R-1.9.0.tgz-split.ad 667222d63ce7e19bf869ea20439d0867 R-1.9.0.tgz-split.ae 42dcd15c23b07decb43a65f937942489 R-1.9.0.tgz-split.af 136279c8d59def0a5221e20ba763c997 R-1.9.0.tgz-split.ag Here is the relevant bit of the NEWS file: CHANGES IN R VERSION 1.9.0 USER-VISIBLE CHANGES o Underscore '_' is now allowed in syntactically valid names, and make.names() no longer changes underscores. Very old code that makes use of underscore for assignment may now give confusing error messages. o Package 'base' has been split into packages 'base', 'graphics', 'stats' and 'utils'. All four are loaded in a default installation, but the separation allows a 'lean and mean' version of R to be used for tasks such as building indices. Packages ctest, eda, modreg, mva, nls, stepfun and ts have been merged into stats, and lqs has been returned to MASS. In all cases a stub has been left that will issue a warning and ensure that the appropriate new home is loaded. All the time series datasets have been moved to package stats. Sweave has been moved to utils. Package mle has been moved to stats4 which will become the central place for statistical S4 classes and methods distributed with base R. Package mle remains as a stub. Users may notice that code in .Rprofile is run with only the new base loaded and so functions may now not be found. For example, ps.options(horizontal = TRUE) should be preceded by library(graphics) or called as graphics::ps.options or, better, set as a hook -- see ?setHook. o There has been a concerted effort to speed up the startup of an R session: it now takes about 2/3rds of the time of 1.8.1. o A warning is issued at startup in a UTF-8 locale, as currently R only supports single-byte encodings. NEW FEATURES o $, $<-, [[, [[<- can be applied to environments. Only character arguments are allowed and no partial matching is done. The semantics are basically that of get/assign to the environment with inherits=FALSE. o There are now print() and [ methods for "acf" objects. o aov() will now handle singular Error() models, with a warning. o arima() allows models with no free parameters to be fitted (to find log-likelihood and AIC values, thanks to Rob Hyndman). o array() and matrix() now allow 0-length `data' arguments for compatibility with S. o as.data.frame() now has a method for arrays. o as.matrix.data.frame() now coerces an all-logical data frame to a logical matrix. o New function assignInNamespace() parallelling fixInNamespace. o There is a new function contourLines() to produce contour lines (but not draw anything). This makes the CRAN package clines (with its clines() function) redundant. o D(), deriv(), etc now also differentiate asin(), acos(), atan(), (thanks to a contribution of Kasper Kristensen). o The `package' argument to data() is no longer allowed to be a (unquoted) name and so can be a variable name or a quoted character string. o There is a new class "Date" to represent dates (without times) plus many utility functions similar to those for date-times. See ?Date. o Deparsing (including using dump() and dput()) an integer vector now wraps it in as.integer() so it will be source()d correctly. (Related to PR#4361.) o .Deprecated() has a new argument `package' which is used in the warning message for non-base packages. o The print() method for "difftime" objects now handles arrays. o dir.create() is now an internal function (rather than a call to mkdir) on Unix as well as on Windows. There is now an option to suppress warnings from mkdir, which may or may not have been wanted. o dist() has a new method to calculate Minkowski distances. o expand.grid() returns appropriate array dimensions and dimnames in the attribute "out.attrs", and this is used by the predict() method for loess to return a suitable array. o factanal(), loess() and princomp() now explicitly check for numerical inputs; they might have silently coded factor variables in formulae. o New functions factorial(x) defined as gamma(x+1) and for S-PLUS compatibility, lfactorial(x) defined as lgamma(x+1). o findInterval(x, v) now allows +/-Inf values, and NAs in x. o formula.default() now looks for a "terms" component before a 'formula' argument in the saved call: the component will have `.' expanded and probably will have the original environment set as its environment. And what it does is now documented. o glm() arguments `etastart' and `mustart' are now evaluated via the model frame in the same way as `subset' and `weights'. o Functions grep(), regexpr(), sub() and gsub() now coerce their arguments to character, rather than give an error. The perl=TRUE argument now uses character tables prepared for the locale currently in use each time it is used, rather than those of the C locale. o New functions head() and tail() in package `utils'. (Based on a contribution by Patrick Burns.) o legend() has a new argument 'text.col'. o methods(class=) now checks for a matching generic, and so no longer returns methods for non-visible generics (and eliminates various mismatches). o A new function mget() will retrieve multiple values from an environment. o model.frame() methods, for example those for "lm" and "glm", pass relevant parts of ... onto the default method. (This has long been documented but not done.) The default method is now able to cope with model classes such as "lqs" and "ppr". o nls() and ppr() have a `model' argument to allow the model frame to be returned as part of the fitted object. o "POSIXct" objects can now have a "tzone" attribute that determines how they will be converted and printed. This means that date-time objects which have a timezone specified will generally be regarded as in their original time zone. o postscript() device output has been modified to work around rounding errors in low-precision calculations in gs >= 8.11. (PR#5285, which is not a bug in R.) It is now documented how to use other Computer Modern fonts, for example italic rather than slanted. o ppr() now fully supports categorical explanatory variables, ppr() is now interruptible at suitable places in the underlying FORTRAN code. o princomp() now warns if both `x' and `covmat' are supplied, and returns scores only if the centring used is known. o psigamma(x, deriv=0), a new function generalizes, digamma() etc. All these (psigamma, digamma, trigamma,...) now also work for x < 0. o pchisq(*, ncp > 0) and hence qchisq() now work with much higher values of ncp; it has become much more accurate in the left tail. o read.table() now allows embedded newlines in quoted fields. (PR#4555) o rep.default(0-length-vector, length.out=n) now gives a vector of length n and not length 0, for compatibility with S. If both `each' and `length.out' have been specified, it now recycles rather than fills with NAs for S compatibility. If both `times' and `length.out' have been specified, `times' is now ignored for S compatibility. (Previously padding with NAs was used.) The "POSIXct" and "POSIXlt" methods for rep() now pass ... on to the default method (as expected by PR#5818). o rgb2hsv() is new, an R interface the C API function with the same name. o User hooks can be set for onLoad, library, detach and onUnload of packages/namespaces: see ?setHook. o save() default arguments can now be set using option "save.defaults", which is also used by save.image() if option "save.image.defaults" is not present. o New function shQuote() to quote strings to be passed to OS shells. o sink() now has a split= argument to direct output to both the sink and the current output connection. o split.screen() now works for multiple devices at once. o On some OSes (including Windows and those using glibc) strptime() did not validate dates correctly, so we have added extra code to do so. However, this cannot correct scanning errors in the OS's strptime (although we have been able to work around these on Windows). Some examples are now tested for during configuration. o strsplit() now has `fixed' and `perl' arguments and split="" is optimized. o subset() now allows a `drop' argument to remove unused factor levels. The default is still to keep them. o termplot() has an option to smooth the partial residuals. o varimax() and promax() add class "loadings" to their loadings component. o Model fits now add a "dataClasses" attribute to the terms, which can be used to check that the variables supplied for prediction are of the same type as those used for fitting. (It is currently used by predict() methods for classes "lm", "mlm", "glm" and "ppr", as well as methods in packages MASS, rpart and tree.) o New command-line argument --max-ppsize allows the size of the pointer protection stack to be set higher than the previous limit of 10000. o The fonts on an X11() device (also jpeg() and png() on Unix) can be specified by a new argument `fonts' defaulting to the value of a new option "X11fonts". o New functions in the tools package: pkgDepends, getDepList and installFoundDepends. These provide functionality for assessing dependencies and the availability of them (either locally or from on-line repositories). o The parsed contents of a NAMESPACE file are now stored at installation and if available used to speed loading the package, so packages with namespaces should be reinstalled. o Argument `asp' although not a graphics parameter is accepted in the ... of graphics functions without a warning. It now works as expected in contour(). o Package stats4 exports S4 generics for AIC() and BIC(). o The Mac OS X version now produces an R framework for easier linking of R into other programs. As a result, R.app is now relocatable. o Added experimental support for conditionals in NAMESPACE files. o Added as.list.environment to coerce environments to lists (efficiently). o New function addmargins() in the stats package to add marginal summaries to tables, e.g. row and column totals. (Based on a contribution by Bendix Carstensen.) o dendrogam edge and node labels can now be expressions (to be plotted via stats:::plotNode called from plot.dendrogram). The diamond frames around edge labels are more nicely scaled horizontally. o Methods defined in the methods package can now include default expressions for arguments. If these arguments are missing in the call, the defaults in the selected method will override a default in the generic. See ?setMethod. o Changes to package 'grid': - Renamed push/pop.viewport() to push/popViewport(). - Added upViewport(), downViewport(), and seekViewport() to allow creation and navigation of viewport tree (rather than just viewport stack). - Added id and id.lengths arguments to grid.polygon() to allow multiple polygons within single grid.polygon() call. - Added vpList(), vpStack(), vpTree(), and current.vpTree() to allow creation of viewport "bundles" that may be pushed at once (lists are pushed in parallel, stacks in series). current.vpTree() returns the current viewport tree. - Added vpPath() to allow specification of viewport path in downViewport() and seekViewport(). See ?viewports for an example of its use. NOTE: it is also possible to specify a path directly, e.g., something like "vp1::vp2", but this is only advised for interactive use (in case I decide to change the separator :: in later versions). - Added "just" argument to grid.layout() to allow justification of layout relative to parent viewport *IF* the layout is not the same size as the viewport. There's an example in help(grid.layout). - Allowed the "vp" slot in a grob to be a viewport name or a vpPath. The interpretation of these new alternatives is to call downViewport() with the name or vpPath before drawing the grob and upViewport() the appropriate amount after drawing the grob. Here's an example of the possible usage: pushViewport(viewport(w=.5, h=.5, name="A")) grid.rect() pushViewport(viewport(w=.5, h=.5, name="B")) grid.rect(gp=gpar(col="grey")) upViewport(2) grid.rect(vp="A", gp=gpar(fill="red")) grid.rect(vp=vpPath("A", "B"), gp=gpar(fill="blue")) - Added engine.display.list() function. This allows the user to tell grid NOT to use the graphics engine display list and to handle ALL redraws using its own display list (including redraws after device resizes and copies). This provides a way to avoid some of the problems with resizing a device when you have used grid.convert(), or the gridBase package, or even base functions such as legend(). There is a document discussing the use of display lists in grid on the grid web site (http://www.stat.auckland.ac.nz/~paul/grid/grid.html) - Changed the implementation of grob objects. They are no longer implemented as external references. They are now regular R objects which copy-by-value. This means that they can be saved/loaded like normal R objects. In order to retain some existing grob behaviour, the following changes were necessary: + grobs all now have a "name" slot. The grob name is used to uniquely identify a "drawn" grob (i.e., a grob on the display list). + grid.edit() and grid.pack() now take a grob name as the first argument instead of a grob. (Actually, they take a gPath - see below) + the "grobwidth" and "grobheight" units take either a grob OR a grob name (actually a gPath - see below). Only in the latter case will the unit be updated if the grob "pointed to" is modified. In addition, the following features are now possible with grobs: + grobs now save()/load() like any normal R object. + many grid.*() functions now have a *Grob() counterpart. The grid.*() version is used for its side-effect of drawing something or modifying something which has been drawn; the *Grob() version is used for its return value, which is a grob. This makes it more convenient to just work with grob objects without producing any graphical output (by using the *Grob() functions). + there is a gTree object (derived from grob), which is a grob that can have children. A gTree also has a "childrenvp" slot which is a viewport which is pushed and then "up"ed before the children are drawn; this allows the children of a gTree to place themselves somewhere in the viewports specified in the childrenvp by having a vpPath in their vp slot. + there is a gPath object, which is essentially a concatenation of grob names. This is used to specify the child of (a child of ...) a gTree. + there is a new API for creating/accessing/modifying grob objects: grid.add(), grid.remove(), grid.edit(), grid.get() (and their *Grob() counterparts can be used to add, remove, edit, or extract a grob or the child of a gTree. NOTE: the new grid.edit() API is incompatible with the previous version. - Added stringWidth(), stringHeight(), grobWidth(), and grobHeight() convenience functions (they produce "strwidth", "strheight", "grobwidth", and "grobheight" unit objects, respectively). - Allowed viewports to turn off clipping altogether. Possible settings for viewport clip arg are now: "on" = clip to the viewport (was TRUE) "inherit" = clip to whatever parent says (was FALSE) "off" = turn off clipping Still accept logical values (and NA maps to "off") UTILITIES o R CMD check now runs the (Rd) examples with default RNGkind (uniform & normal) and set.seed(1). example(*, setRNG = TRUE) does the same. o undoc() in package `tools' has a new default of `use.values = NULL' which produces a warning whenever the default values of function arguments differ between documentation and code. Note that this affects "R CMD check" as well. o Testing examples via massage-examples.pl (as used by R CMD check) now restores the search path after every help file. o checkS3methods() in package 'tools' now also looks for generics in the loaded namespaces/packages listed in the Depends fields of the package's DESCRIPTION file when testing an installed package. o The DESCRIPTION file of packages may contain a 'Suggests:' field for packages that are only used in examples or vignettes. o Added an option to package.dependencies() to handle the 'Suggests' levels of dependencies. o Vignette dependencies can now be checked and obtained via vignetteDepends. o Option 'repositories' to list URLs for package repositories added. o package.description() has been replaced by packageDescription(). o R CMD INSTALL/build now skip Subversion's .svn directories as well as CVS directories. C-LEVEL FACILITIES o arraySubscript and vectorSubscript take a new argument which is a function pointer that provides access to character strings (such as the names vector) rather than assuming these are passed in. o R_CheckUserInterrupt is now described in `Writing R Extensions' and there is a new equivalent subroutine rchkusr for calling from FORTRAN code. o hsv2rgb and rgb2hsv are newly in the C API. o Salloc and Srealloc are provided in S.h as wrappers for S_alloc and S_realloc, since current S versions use these forms. o The type used for vector lengths is now R_len_t rather than int, to allow for a future change. o The internal header nmath/dpq.h has slightly improved macros R_DT_val() and R_DT_Cval(), a new R_D_LExp() and improved R_DT_log() and R_DT_Clog(); this improves accuracy in several [dpq]-functions {for "extreme" arguments}. DEPRECATED & DEFUNCT o print.coefmat() is defunct, replaced by printCoefmat(). o codes() and codes<-() are defunct. o anovalist.lm (replaced in 1.2.0) is now defunct. o glm.fit.null(), lm.fit.null() and lm.wfit.null() are defunct. o print.atomic() is defunct. o The command-line arguments --nsize and --vsize are no longer recognized as synonyms for --min-nsize and --min-vsize (which replaced them in 1.2.0). o Unnecessary methods coef.{g}lm and fitted.{g}lm have been removed: they were each identical to the default method. o La.eigen() is deprecated now eigen() uses LAPACK by default. o tetragamma() and pentagamma() are deprecated, since they are equivalent to psigamma(, deriv=2) and psigamma(, deriv=3). o LTRUE/LFALSE in Rmath.h have been removed: they were deprecated in 1.2.0. o package.contents() has been deprecated. INSTALLATION CHANGES o The defaults for configure are now --without-zlib --without-bzlib --without-pcre. The included PCRE sources have been updated to version 4.5 and PCRE >= 4.0 is now required if --with-pcre is used. The included zlib sources have been updated to 1.2.1, and this is now required if --with-zlib is used. o configure no longer lists bzip2 and PCRE as `additional capabilities' as all builds of R have had them since 1.7.0. o --with-blas=goto to use K. Goto's optimized BLAS will now work. BUG FIXES o When lm.{w}fit() disregarded arguments in ... they reported the values and not the names. o lm(singular.ok = FALSE) was looking for 0 rank, not rank < p. o The substitution code for strptime in the sources no longer follows glibc in silently `correcting' invalid inputs. o The cor() function did not remove missing values in the non-Pearson case. o [l]choose() use a more accurate formula which also slightly improves p- and qhyper(); choose(n, k) now returns 0 instead of NaN for k < 0 or > n. o find(simple.words=TRUE) (the default) was still using regular expressions for e.g. "+" and "*". Also, it checked the mode only of the first object matching a regular expression found in a package. o Memory leaks in [dpq]wilcox and [dqr]signrank have been plugged. These only occurred when multiple values of m or n > 50 were used in a single call. (PR#5314, plus another potential leak.) o Non-finite input values to eigen(), La.eigen(), svd() and La.svd() are now errors: they often caused infinite looping. (PR#5406, PR#4366, PR#3723: the fix for 3723/4366 returned a vector of NAs, not a matrix, for the eigenvectors.) o stepfun(x,y) now gives an error when `x' has length 0 instead of an invalid result (that could lead to a segmentation fault). o buildVignettes() uses file.remove() instead of unlink() to remove temporary files. o methods(class = "lqs") does not produce extraneous entries anymore. o Directly calling a method that uses NextMethod() no longer produces the erroneous error message 'function is not a closure'. o chisq.test(x, simulate.p.value = TRUE) could hang in an infinite loop or segfault, as r2dtable() did, when the entries in x where large. (PR#5701) o fisher.test(x) could give a P-value of 'Inf' in similar cases which now result in an error (PR#4688). It silently truncated non-integer 'x' instead of rounding. o cutree(a, h=h) silently gave wrong results when 'a' was an agnes object; now gives an error and reminds of as.hclust(). o postscript() could crash if given a font value outside the valid range 1...5. o qchisq(1-e, .., ncp=.) did not terminate for small e. (PR#6421 (PR#875)) o contrasts() turns a logical variable into a factor. This now always has levels c("FALSE", "TRUE") even if only one (or none) of these occur in the variable. o model.frame()'s lm and glm methods had 'data' and 'na.action' arguments which they ignored and have been removed. o The defaults data=list() in lm() and glm() could never be used and have been removed. glm had na.action=na.fail, again never used. o tools:::.getInternalS3generics() was omitting all the members of the S3 group generics, which also accept methods for members. o Some BLASes were returning NA %*% 0 as 0 and some as NA. Now slower but more careful code is used if NAs are present. (PR#4582) o package.skeleton() no longer generates invalid filenames for code and help files. Also, care is taken not to generate filenames that differ only by case. o pairs() now respects axis graphical parameters such as cex.main, font.main and las. o Saving images of packages with namespaces (such as mle) was not compressing the image. o When formula.default() returned a terms object, it returned a result of class c("terms", "formula") with different subsetting rules from an object of class "formula". o The standalone Rmath library did not build correctly on systems with inaccurate log1p. o Specifying asp is now respected in calls like plot(1, 10, asp=1) with zero range on both axes. o outer() called rep() with an argument the generic does not have, and discarded the class of the answer. o object.size() now returns a real (not integer) answer and so can cope with objects occupying more than 2Gb. o Lookups base:: and ::: were not confining their search to the named package/namespace. o qbinom() was returning NaN for prob = 0 or 1 or size = 0 even though the result is well-defined. (In part, PR#5900.) o par(mgp)[2] was being interpreted as relative to par(mgp)[3]. (PR#6045) o Versioned install was broken both with and without namespaces: no R code was loaded. o methods(), getS3method() and the registration of S3 methods in namespaces were broken if the S3 generic was converted into an S4 generic by setting an S4 method. o Title and copyright holder of the reference manual are now in sync with the citation() command. o The validation code for POSIXlt dates and hence seq(, by="DSTdays") now works for large mday values (not just those in -1000...1000). (PR#6212) o The print() method for data frames now copes with data frames containing arrays (other than matrices). o texi2dvi() and buildVignettes() use clean=FALSE as default because the option is not supported on some Solaris machines. For buildVignettes() this makes no difference as it uses an internal cleanup mechanism. o The biplot() method for "prcomp" was not registered nor exported. (PR#6425) o Latex conversion of .Rd files was missing newline before \end{Section} etc which occasionally gave problems, as fixed for some other \end{Foo} in 1.8.1. (PR#5645) o Work around a glibc bug to make the %Z format usable in strftime(). o The glm method for rstandard() was wrongly scaled for cases where summary(model)$dispersion != 1. o Calling princomp() with a covariance matrix (rather than a list) failed to predict scores rather than predict NA as intended. (PR#6452) o termplot() is more tolerant of variables not in the data= argument. (PR#6327) o isoreg() could segfault on monotone input sequences. (PR#6494) o Rdconv detected \link{\url{}} only very slowly. (PR#6496) o aov() with Error() term and no intercept incorrectly assigned terms to strata. (PR#6510) o ftable() incorrectly handled arguments named "x". (PR#6541) o vector(), matrix(), array() and their internal equivalents report correctly that the number of elements specified was too large (rather than reporting it as negative). o Minor copy-paste error in example(names). (PR#6594) o length<-() now works correctly on factors (and is now generic with a method for factors). o x <- 2^32; x:(x+3) no longer generates an error (but gives a result of type "double"). o pgamma(30, 100, lower=FALSE, log=TRUE) is not quite 0, now. pgamma(x, alph) now only uses a normal approximation for alph > 1e5 instead of alph > 1000. This also improves the accuracy of ppois(). o qgamma() now does one or more final Newton steps, increasing accuracy from around 2e-8 to 3e-16 in some cases. (PR#2214). It allows values p close to 1 not returning Inf, with accuracy for 'lower=FALSE', and values close to 0 not returning 0 for 'log=TRUE'. These also apply to qchisq(), e.g., qchisq(1e-13, 4, lower=FALSE) is now finite and qchisq(1e-101, 1) is positive. o gamma(-n) now gives NaN for all negative integers -n. o The Unix version of browseURL() now protects the URL from the shell, for example allowing & and $ to occur in the URL. It was incorrectly attempting to use -remote "openURL()" for unknown browsers. o extractAIC.coxph() works around an inconsistency in the $loglik output from coxph. (PR#6646) o stem() was running into integer overflows with nearly-constant inputs, and scaling badly for constant ones. (Partly PR#6645) o system() under Unix was losing the 8095th char if the output was split. (PR#6624) o plot.lm() gave incorrect results if there were zero weights. (PR#6640) o Binary operators warned for inconsistent lengths on vector op vector operations, but not on vector op matrix ones. (PR#6633 and more.) Comparison operators did not warn about inconsistent lengths for real vectors, but did for integer, logical and character vectors. o spec.pgram(x, ..., pad, fast, ...) computed the periodogram with a bias (downward) whenever 'pad > 0' (non-default) or 'fast = TRUE' (default) and nextn(n) > n where n = length(x); similarly for 'df' (approximate degrees of freedom for chisq). o dgamma(0, a) now gives Inf for a < 1 (instead of NaN), and so does dchisq(0, 2*a, ncp). o pcauchy() is now correct in the extreme tails. o file.copy() did not check that any existing `from' file had been truncated before appending the new contents. o The QC files now check that their file operations succeeded. o replicate() worked by making the supplied expression the body of an anonymous function(x), leading to a variable capture issue. Now, function(...) is used instead. o chisq.test(simulate.p.value = TRUE) was returning slightly incorrect p values, notably p = 0 when the data gave the most extreme value. o terms.formula(simplify = TRUE) was losing offset terms. Multiple offset terms were not being removed correctly if two of them appeared first or last in the formula. (PR#6656) o Rd conversion to latex did not add a new line before \end{Section} in more cases than were corrected in 1.8.1. o split.default() dropped NA levels in its internal code but returned them as NA in all components in the interpreted code for factors. (PR#6672) o points.formula() had problems if there was a subset argument and no data argument. (PR#6652) o as.dist() does a bit more checking of its first argument and now warns when applied to non-square matrices. o mle() gives a more understandable error message when its 'start' argument is not ok. o All uses of dir.create() check the return value. download.packages() checks that destdir exists and is a directory. o Methods dispatch corrects an error that failed to find methods for classes that extend sealed classes (class unions that contain basic classes, e.g.). o Sweave no longer wraps the output of code chunks with echo=false and results=tex in Schunk environments. o termplot() handles models with missing data better, especially with na.action=na.exclude. o 1:2 * 1e-100 now prints with correct number of spaces. o Negative subscripts that were out of range or NA were not handled correctly. Mixing negative and NA subscripts is now caught as an error: it was not caught on some platforms and segfaulted on others. o gzfile() connections had trouble at EOF when used on uncompressed file. o The Unix version of dataentry segfaulted if the `Copy' button was used. (PR#6605) o unlist on lists containing expressions now works (PR#5628) o D(), deriv() and deriv3() now also can deal with gamma and lgamma. o The X11 module can now be built against XFree86 4.4.0 headers (still with some warnings). o seq.POSIXt(from, to, by="DSTdays") was shorter than expected for rare times in the UK time zone. (PR#4558) o c/rbind() did not support vectors/matrices of mode "list". (PR#6702) o summary() methods for POSIX[cl]t and Date classes coerced the number of NAs to a date on printing. o KalmanSmooth would sometimes return NA values with NA inputs. (PR#6738) o fligner.test() worked correctly only if data were already sorted by group levels. (PR#6739) -- 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 From dmurdoch at pair.com Mon Apr 12 21:37:40 2004 From: dmurdoch at pair.com (Duncan Murdoch) Date: Mon, 12 Apr 2004 15:37:40 -0400 Subject: [R] R 1.9.0 is release In-Reply-To: References: Message-ID: On 12 Apr 2004 14:05:25 +0200, Peter Dalgaard wrote : >I've rolled up R-1.9.0.tgz a short while ago. This is a new version >with a number of new features, most notably a substantial >reorganization of the standard packages, a major update of the grid >package, and the fact that underscore can now be used as a regular >character in variable names. I've just uploaded the Windows build. It should appear on CRAN and the mirrors by tomorrow. The main Windows-specific changes are the following: - A "stay on top" option for windows. - Rcmd can now be written R CMD, as on Unix. - Tony Plate's "Paste commands only" to paste the commands from a copied block of output There are many other changes and bug fixes. Here's an extract from the CHANGES file: rw1090 ====== Both Rterm and Rgui now give usage information via the --help or -h command-line flag. There is now a "Misc|Break to debugger" menu option, enabled when a debugger is detected (somewhat fallibly), or infallibly by the "--debug" command line option. This will cause a trap to an external debugger, e.g. for running Rgui under gdb. If the menu item is selected when not running under a debugger R is likely to crash. If the "--debug" option is used, R will break to the debugger during command line processing, allowing the startup process to be debugged. Added "stay" argument to bringToTop(), to allow the user to specify that a window should stay on top of other windows. Also added "stay on top" item to the popup menus. All of these require R to be running in SDI mode ("Rgui --sdi" or via the settings in file `Rconsole'). Changed windows() so that new windows fit within the MDI client area. Added winMenuNames() and winMenuItems() functions to query user menus. Added menu items for www.r-project.org and CRAN on the help menu. (Wishlist PR#6492) Added "R" command to be similar to Unix invocation of scripts, e.g. "R CMD INSTALL" is the same as "Rcmd INSTALL". Rcmd still exists for backwards compatibility (and to avoid conflicts over the name `R'). All of R, R CMD and Rcmd now accept --help. Rcmd Rd2dvi can now be specified as such rather than as Rcmd Rd2dvi.sh. Added "Paste commands only" to edit and popup menus in the Rgui console. This allows copying of a block of output, but pasting only the commands back to the console for re-execution. (Code contributed by Tony Plate.) Installation ------------ Parallel make (make -j2, say) can be used, but only usefully on dual-processor (or perhaps hyperthreaded) hosts with at least 384Mb of memory. Installing now sorts in the C locale to ensure that a consistent sort order is used. (Some aspects of sorting used to be done in the locale of the host machine, but Perl and the cygwin-based tools used the ASCII collation order.) The long-untested support for making Windows .hlp files has been withdrawn. There is support for using K. Goto's fast BLAS. On a 2.6Ghz P4 with 1Gb RAM and A a 1000 x 1000 matrix we had the following timings R BLAS ATLAS Goto A %*% A 3.7 0.65 0.56 svd(A) 16.2 7.77 6.83 Note that using a fast BLAS is much less effective for smaller matrices as are more common in statistical applications. Faster assembler code for exponentiation is used. Cross-building of R itself now works again. (It had been broken since 1.8.0.) Building/installing packages ---------------------------- R CMD INSTALL/build/check map path names with spaces in to their short forms. R CMD INSTALL now supports versioned install via --with-package-versions. Installing (binary) package bundles now checks the MD5 sums and reports success, just as for packages. Added "* DONE" to the end of INSTALL logs so --install option to CHECK will work. (This is a repository maintainer option; see src/scripts/check.in for docs). Internal changes ---------------- The fast bmp/png/jpeg code introduced in R 1.8.0 is used even for 256-color displays (as we have now been able to test it on such). R's internal malloc etc are now remapped to Rm_malloc etc and only used in allocating memory for R objects, the Wilcoxon tests and a few other memory-intensive applications. Improved malloc routines from the current version of Doug Lea's malloc (as suggested by David Teller) should enable large memory areas to be used more effectively, in particular those over 2Gb where OS support has been enabled. The initially requested memory is no longer reserved, but as this malloc is able to work with non-contiguous memory chunks that should not matter. The installer uses LZMA compression, so Inno Setup >= 4.1.5 is required. Version 1.2.5 of libpng is now used in binary builds. Bug fixes --------- Fixed list.files() to properly handle paths like "C:", etc. Fixed unlink() to accept empty file list for Unix consistency. Fixed handling of whitespace in Rd2dvi.sh processing of DESCRIPTION files. Fixed handling of "--max-mem-size" syntax error on command line. In RGui, ^T would not transpose the first and second characters on a line. (PR#5593) Fixed junk character at start of a pipe(). (PR#5053) R CMD SHLIB was computing dependencies for all C files, not just those specified on the command line, and building the DLL from all *.o files in the directory. The sizes of metafiles in pixels were often coming out one pixel more than requested, so the background was not quite all painted. Now we over-estimate. Rproxy.dll would cause a crash when transferring large amounts of data. Workaround for Microsoft's esoteric idea that date-times in 1970 before 1970-01-01 00:00:00 GMT are invalid, so as.POSIXct("1970-01-01 00:00:00") failed in timezones ahead of GMT. Avoid possible segfault with browseURL() on urls of more than 264 chars (although these are not guaranteed to work). From bates at stat.wisc.edu Fri Apr 30 18:20:21 2004 From: bates at stat.wisc.edu (Douglas Bates) Date: 30 Apr 2004 11:20:21 -0500 Subject: Deepayan Sarkar wins the 2004 Chambers Award Message-ID: <6rekq5saii.fsf@bates4.stat.wisc.edu> It was announced today that Deepayan Sarkar has won the 2004 Chambers Award sponsored by the Statistical Computing section of the American Statistical Association. This award, made possible by a generous donation by Dr. John M. Chambers, is given annually in recognition of outstanding contributions to statistical software by a student. Deepayan received the award for his lattice package for R. The award consists of a cash prize, a plaque, and paid registration to attend the Joint Statistical Meetings. Deepayan will formally receive the award during the Statistical Computing/Statistical Graphics sections' business meeting and mixer at the 2004 Joint Statistical Meetings in Toronto. Our congratulations to Deepayan. From p.dalgaard at biostat.ku.dk Mon Jun 21 13:38:51 2004 From: p.dalgaard at biostat.ku.dk (Peter Dalgaard) Date: 21 Jun 2004 13:38:51 +0200 Subject: R 1.9.1 is released Message-ID: I've rolled up R-1.9.1.tgz a short while ago. This is a maintenance version mainly to fix a number of minor bugs and issues (the most annoying one seems to have been the change to barplots of tables) and some installation issues. Because of the relocation the CVS archives, there is no direct access to the files until they show up on the CRAN master site. You can then get it from http://cran.r-project.org/src/base/R-1.9.1.tgz or wait for it to be mirrored at a CRAN site nearer to you. Binaries for various platforms will appear in due course. There is also a version split for floppies. These are the md5sums for the freshly created files, in case you wish to check that they are uncorrupted: c8201425506e5c077ef1936e19ea2f51 R-1.9.1.tgz 7683777a649e099d9c278ebc58fcbc56 R-1.9.1.tgz-split.aa c0b8dba896ab7cf1fd2e597f400bfe07 R-1.9.1.tgz-split.ab ded2cc8335f338f80cf5380d6394f7ab R-1.9.1.tgz-split.ac 1d35502fdf6876e71e5218603a47394d R-1.9.1.tgz-split.ad 51a7cfa9effcd9e61fbb44ee78a86de9 R-1.9.1.tgz-split.ae 5419f461683e8c98cd8cfaa308df0b40 R-1.9.1.tgz-split.af 183e16b38224b3c6c39b400aaa6172a0 R-1.9.1.tgz-split.ag For the R Core Team Peter Dalgaard Here's the relevant bit of the NEWS file: CHANGES IN R VERSION 1.9.1 NEW FEATURES o as.Date() now has a method for "POSIXlt" objects. o mean() has a method for "difftime" objects and so summary() works for such objects. o legend() has a new argument 'pt.cex'. o plot.ts() has more arguments, particularly 'yax.flip'. o heatmap() has a new 'keep.dendro' argument. o The default barplot method now handles vectors and 1-d arrays (e.g., obtained by table()) the same, and uses grey instead of heat color palettes in these cases. (Also fixes PR#6776.) o nls() now looks for variables and functions in its formula in the environment of the formula before the search path, in the same way lm() etc look for variables in their formulae. INSTALLATION ISSUES o src/modules/X11/dataentry.c would not build on some XFree 4.4.0 systems. (This is a bug in their header files but we have added a workaround.) o Building with gcc/g77 3.4.0 on ix86 platforms failed to produce a working build: the critical LAPACK routines are now compiled with -ffloat-store. o Added patches to enable 64-bit builds on AIX 5.1: see the R-admin manual for details. o Added some patches to allow non-IEEE-754 installations to work reasonably well. (Infs and NAs are still not handled properly in complex arithmetic and functions such as sin(). See also Deprecated, as support for non-IEEE-754 installations is about to be removed.) o Installation will now work in Estonian (et_EE*) locales, which sort z before u. (PR#6958) DEPRECATED & DEFUNCT o Support for non-IEEE-754 arithmetic (which has been untested for some time) will be removed in the next full release. o Direct use of R INSTALL|REMOVE|BATCH|COMPILE|SHLIB is deprecated: use R CMD instead. o The gnome/GNOME graphics device is deprecated and will be removed in the next full release. BUG FIXES o pbinom(q, N, prob) is now more accurate when prob is close to 0. (PR#6757) o pcauchy(x, .., log.p) is now more accurate for large x, particularly when log.p = TRUE. (PR#6756) o pgeom(q, prob, lower.tail, log.p) is now (sometimes much) more accurate when prob is very small. (PR#6792) The code for pgeom(prob=1) assumed IEEE 754 arithmetic, and gave NaNs under gcc 3.4.0 -fPIC, for example. o makeARIMA() was not handling an ARMA(0, 0) model correctly. o as.Date() was failing on factors. (PR#6779) o min(), max() and range() were failing on "difftime" objects. o as.data.frame.list() could fail on some unusual list names. (PR#6782) o type.convert() ignored na.strings when no conversion was done. (PR#6781, not needed for its primary use in read.table.) o Fixed a clipping problem in the quartz() device. o Subsetting a factor swapped the order of the attributes, which identical() cares about. (PR#6799) o The L-BFGS-B option of optim() apparently needs part of its workspace zeroed. (PR#6720) o extractAIC.survreg() needed updating. o When using the header Rmath.h in standalone mode, the case where TRUE, FALSE are already defined is now handled correctly. o Package utils now exports several functions that are needed for writing Sweave drivers. o Comparison of two lists/expressions was giving nonsensical (and often random) answers, and is now an error. o The C-level function ncols was returning a random answer (often 0) for a 1D array. This caused model.matrix to misbehave (perhaps segfault) if a term was a 1D array. (PR#6838) o The configure script now finds the pdf viewers ggv and gpdf. o Workaround for the problems strptime on MacOS X has with dates before 1900. o 'R CMD build' works in a directory whose path contains spaces. (PR#6830 under Unix/Linux: it already worked under Windows.) Also 'R CMD check'. o mosaicplot() stops cleanly if given a table containing missing values. o install.packages() from a local CRAN was broken. o bxp() fixed for e.g., boxplot(..., border=2:4) o approx(list(x=rep(NaN,9), y=1:9), xout=NaN) does not seg.fault anymore (PR#6809). o plot(1, pch=NA) does not give an error anymore and plot(1:2, pch=c("o",NA)) only prints one symbol (PR#6876). o diffinv(matrix(3, 7,0)) now works. o plot.ts(z) for multivariate 'z' now properly draws all 'nc' xlab`s when nc > 1 and obeys 'ann=FALSE' or 'axes=FALSE'. o aggregate(.data.frame) failed if the answer would have had one row. o recordPlot() and replayPlot() failed to duplicate the display list, so further plotting altered the saved or replayed object. o Assignments of the form adf[i,j] <- value now accept a data-frame value as well as a list value. o dir.create() sometimes erroneously continued to report a directory already existed after the first instance. (PR#6892) o arima.sim() allows a null model. o which.min() & which.max()'s C code now PROTECT()'s its result. o Building standalone nmath did not support some of the DEBUG options. o mle() got confused if start value list was not in same order as arguments of likelihood function (reported by Ben Bolker) o backsolve(r, x, k) now allows k < nrow(x) - as its documentation always claimed. o update.packages("mgcv") and old.packages(*) now give a better error message; and installed.packages("mgcv") properly returns . o stats:::as.dendrogram.hclust() is documented and no longer re-sorts the two children at each node. This fixes as.dendrogram(hh) for the case where hh is a "reordered" hclust object. plot.dendrogram(x) now draws leaves 'x' more sensibly. reorder.dendrogram() now results in a dendrogram with correct "midpoint"s, and hence reordered dendrograms are plotted correctly. stats:::midcache.dendrogram() and hence the reorder() and rev() dendrogram methods do not return bloated dendrograms. o heatmap(*, labRow=., labCol=.) now also reorders the labels when specified---not only when using default labels. o Copying lattice (grid) output to another device now works again (There were intermittent problems in 1.9.0 - PR#6915, #6947/8.) o hist() uses a more robust choice of its 'diddle' factor, used to detect if an observation is on a bin boundary. (PR#6931) o jitter(x) now returns x when length(x) == 0. o Under some rare circumstances the locale-specific tables used by the perl=TRUE option to grep() etc were being corrupted and so matches were missed. o qbinom(*, prob = 0, lower.tail = FALSE) now properly gives 0. (PR#6972) o Class "octmode" needed a "[" method to preserve the class: see example(file.info) for an example. -- 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 From tlumley at u.washington.edu Sun Jul 11 05:38:00 2004 From: tlumley at u.washington.edu (Thomas Lumley) Date: Sat, 10 Jul 2004 20:38:00 -0700 (PDT) Subject: newsletter Message-ID: The new issue of the R Newsletter (1/2004) is out on http://www.r-project.org/ -thomas Thomas Lumley Assoc. Professor, Biostatistics tlumley at u.washington.edu University of Washington, Seattle From p.dalgaard at biostat.ku.dk Mon Oct 4 17:29:39 2004 From: p.dalgaard at biostat.ku.dk (Peter Dalgaard) Date: 04 Oct 2004 17:29:39 +0200 Subject: R 2.0.0 is released Message-ID: I've rolled up R-2.0.0.tar.gz a short while ago. This is a new version with a number of new features. See below for the details. As was the case with R 1.0.0, this new version represents a coming of age more than a radical change to R. We do plan to celebrate the new major version with press releases and such. The release will be available from http://cran.r-project.org/src/base/R-2/R-2.0.0.tar.gz or you might wait for it to be mirrored at a CRAN site nearer to you. Binaries for various platforms will appear in due course. There is also a version split for floppies. For the R Core Team Peter Dalgaard These are the md5sums for the freshly created files, in case you wish to check that they are uncorrupted: 3900bca37cabb4b76b8d736d51cc9251 R-2.0.0.tar.gz 4a3c7595b112d879997f7455fa8c1c0d R-2.0.0.tar.gz-split.aa 45d376c7c533c62c657ef0fafac8a784 R-2.0.0.tar.gz-split.ab 7dbdb241e1fb7263701719ea856ebe41 R-2.0.0.tar.gz-split.ac 1e1077f7593778b79e9b0d5c676af63b R-2.0.0.tar.gz-split.ad 6f4ffaa48a54e002f586f80fd4f2461c R-2.0.0.tar.gz-split.ae 34b62bb31f6ecf84da329d21c2a21561 R-2.0.0.tar.gz-split.af c880f8f06ca3fe367bba6757e9cfbf32 R-2.0.0.tar.gz-split.ag b1a2d17d3ae523d04ffc8d3c6db4b67b R-2.0.0.tar.gz-split.ah Here is the relevant part of the NEWS file CHANGES IN R VERSION 2.0.0 USER-VISIBLE CHANGES o The stub packages from 1.9.x have been removed: the library() function selects the new home for their code. o `Lazy loading' of R code has been implemented, and is used for the standard and recommended packages by default. Rather than keep R objects in memory, they are kept in a database on disc and only loaded on first use. This accelerates startup (down to 40% of the time for 1.9.x) and reduces memory usage -- the latter is probably unimportant of itself, but reduces commensurately the time spent in garbage collection. Packages are by default installed using lazy loading if they have more than 25Kb of R code and did not use a saved image. This can be overridden by INSTALL --[no-]lazy or via a field in the DESCRIPTION file. Note that as with --save, any other packages which are required must be already installed. As the lazy-loading databases will be consulted often, R will be slower if run from a slow network-mounted disc. o All the datasets formerly in packages 'base' and 'stats' have been moved to a new package 'datasets'. data() does the appropriate substitution, with a warning. However, calls to data() are not normally needed as the data objects are visible in the 'datasets' package. Packages can be installed to make their data objects visible via R CMD INSTALL --lazy-data or via a field in the DESCRIPTION file. o Package 'graphics' has been split into 'grDevices' (the graphics devices shared between base and grid graphics) and 'graphics' (base graphics). Each of the 'graphics' and 'grid' packages load 'grDevices' when they are attached. Note that ps.options() has been moved to grDevices and user hooks may need to be updated. o The semantics of data() have changed (and were incorrectly documented in recent releases) and the function has been moved to package 'utils'. Please read the help page carefully if you use the 'package' or 'lib.loc' arguments. data() now lists datasets, and not just names which data() accepts. o Dataset 'phones' has been renamed to 'WorldPhones'. o Datasets 'sunspot.month' and 'sunspot.year' are available separately but not via data(sunspot) (which was used by package lattice to retrieve a dataset 'sunspot'). o Packages must have been re-installed for this version, and library() will enforce this. o Package names must now be given exactly in library() and require(), regardless of whether the underlying file system is case-sensitive or not. So 'library(mass)' will not work, even on Windows. o R no longer accepts associative use of relational operators. That is, 3 < 2 < 1 (which used to evalute as TRUE!) now causes a syntax error. If this breaks existing code, just add parentheses -- or braces in the case of plotmath. o The R parser now allows multiline strings, without escaping the newlines with backslashes (the old method still works). Patch by Mark Bravington. NEW FEATURES o There is a new atomic vector type, class "raw". See ?raw for full details including the operators and utility functions provided. o The default barplot() method by default uses a gamma-corrected grey palette (rather than the heat color palette) for coloring its output when given a matrix. o The 'formula' method for boxplot() has a 'na.action' argument, defaulting to NULL. This is mainly useful if the response is a matrix when the previous default of 'na.omit' would omit entire rows. (Related to PR#6846.) boxplot() and bxp() now obey global 'par' settings and also allow the specification of graphical options in more detail, compatibly with S-PLUS (fulfilling wishlist entry PR#6832) thanks to contributions from Arni Magnusson. For consistency, 'boxwex' is not an explicit argument anymore. o chull() has been moved to package graphics (as it uses xy.coords). o There is now a coef() method for summaries of "nls" objects. o compareVersion(), packageDescription() and read.00Index() have been moved to package 'utils'. o convolve(), fft(), mvfft() and nextn() have been moved to package stats. o coplot() now makes use of cex.lab and font.lab par() settings. o cumsum/prod/max/min() now preserve names. o data(), .path.packages() and .find.packages() now interpret package = NULL to mean all loaded packages. o data.frame() and its replacement methods remove the names from vector columns. Using I() will ensure that names are preserved. o data.frame(check.names = TRUE) (the default) enforces unique names, as S does. o .Defunct() now has 'new' and 'package' arguments like those of .Deprecated(). o The plot() method for "dendrogram" objects now respects many more nodePar and edgePar settings and for edge labeling computes the extents of the diamond more correctly. o deparse(), dput() and dump() have a new 'control' argument to control the level of detail when deparsing. dump() defaults to the most detail, the others default to less. See ?.deparseOpts for the details. They now evaluate promises by default: see ?dump for details. o dir.create() now expands '~' in filenames. o download.file() has a new progress meter (under Unix) if the length of the file is known -- it uses 50 equals signs. o dyn.load() and library.dynam() return an object describing the DLL that was loaded. For packages with namespaces, the DLL objects are stored in a list within the namespace. o New function eapply() - apply for environments. The supplied function is applied to each element of the environment; the order of application is not specified. o edit() and fix() use the object name in the window caption on some platforms (e.g. Windows). o Function file.edit() function added: like file.show(), but allows editing. o Function file.info() can return file sizes > 2G if the underlying OS supports such. o fisher.test(*, conf.int=FALSE) allows the confidence interval computation to be skipped. o formula() methods for classes "lm" and "glm" used the expanded formula (with '.' expanded) from the terms component. o The `formula' method for ftable() now looks for variables in the environment of the formula before the usual search path. o A new function getDLLRegisteredRoutines() returns information about the routines available from a DLL that were explicitly registered with R's dynamic loading facilities. o A new function getLoadedDLLs() returns information about the DLLs that are currently loaded within this session. o The package element returned by getNativeSymbolInfo() contains reference to both the internal object used to resolve symbols with the DLL, and the internal DllInfo structure used to represent the DLL within R. o help() now returns information about available documentation for a given topic, and notifies about multiple matches. It has a separate print() method. If the latex help files were not installed, help() will offer to create a latex file on-the-fly from the installed .Rd file. o heatmap() has a new argument 'reorderfun'. o Most versions of install.packages() have an new optional argument 'dependencies = TRUE' which will not only fetch the packages but also their uninstalled dependencies and their dependencies .... The Unix version of install.packages() attempts to install packages in an order that reflects their dependencies. (This is not needed for binary installs as used under Windows.) o interaction() has new argument 'sep'. o interaction.plot() allows 'type = "b"' and doesn't give spurious warnings when passed a matplot()-only argument such as 'main'. o is.integer() and is.numeric() always return FALSE for a factor. (Previously they were true and false respectively for well-formed factors, but it is possible to create factors with non-integer codes by underhand means.) o New functions is.leaf(), dendrapply() and a labels() method for dendrogram objects. o legend() has an argument 'pt.lwd' and setting 'density' now works because 'angle' now defaults to 45 (mostly contributed by Uwe Ligges). o library() now checks the version dependence (if any) of required packages mentioned in the Depends: field of the DESCRIPTION file. o load() now detects and gives a warning (rather than an error) for empty input, and tries to detect (but not correct) files which have had LF replaced by CR. o ls.str() and lsf.str() now return an object of class "ls_str" which has a print method. o make.names() has a new argument allow_, which if false allows its behaviour in R 1.8.1 to be reproduced. o The 'formula' method for mosaicplot() has a 'na.action' argument defaulting to 'na.omit'. o model.frame() now warns if it is given data = newdata and it creates a model frame with a different number of rows from that implied by the size of 'newdata'. Time series attributes are never copied to variables in the model frame unless na.action = NULL. (This was always the intention, but they sometimes were as the result of an earlier bug fix.) o There is a new 'padj' argument to mtext() and axis(). Code patch provided by Uwe Ligges (fixes PR#1659 and PR#7188). o Function package.dependencies() has been moved to package 'tools'. o The 'formula' method for pairs() has a 'na.action' argument, defaulting to 'na.pass', rather than the value of getOption("na.action"). o There are five new par() settings: 'family' can be used to specify a font family for graphics text. This is a device-independent family specification which gets mapped by the graphics device to a device-specific font specification (see, for example, postscriptFonts()). Currently, only PostScript, PDF, X11, Quartz, and Windows respond to this setting. 'lend', 'ljoin', and 'lmitre' control the cap style and join style for drawing lines (only noticeable on thick lines or borders). Currently, only PostScript, PDF, X11, and Quartz respond to these settings. 'lheight' is a multiplier used in determining the vertical spacing of multi-line text. All of these settings are currently only available via par() (i.e., not in-line as arguments to plot(), lines(), ...) o PCRE (as used by grep etc) has been updated to version 5.0. o A 'version' argument has been added to pdf() device. If this is set to "1.4", the device will support transparent colours. o plot.xy(), the workhorse function of points(), lines() and plot.default() now has 'lwd' as explicit argument instead of implicitly in '...', and now recycles lwd where it makes sense, i.e. for line-based plot symbols. o The png() and jpeg() devices (and the bmp() device under Windows) now allow a nominal resolution to be recorded in the file. o New functions to control mapping from device-independent graphics font family to device-specific family: postscriptFont() and postscriptFonts() (for both postscript() and pdf()); X11Font() and X11Fonts(); windowsFont() and windowsFonts(); quartzFont() and quartzFonts(). o power (x^y) has optimised code for y == 2. o prcomp() is now generic, with a formula method (based on an idea of Jari Oksanen). prcomp() now has a simple predict() method. o printCoefmat() has a new logical argument 'signif.legend'. o quantile() has the option of several methods described in Hyndman & Fan (1996). (Contributed by Rob Hyndman.) o rank() has two new 'ties.method's, "min" and "max". o New function read.fortran() reads Fortran-style fixed-format specifications. o read.fwf() reads multiline records, is faster for large files. o read.table() now accepts "NULL", "factor", "Date" and "POSIXct" as possible values of colClasses, and colClasses can be a named character vector. o readChar() can now read strings with embedded nuls. o The "dendrogram" method for reorder() now has a 'agglo.FUN' argument for specification of a weights agglomeration function. o New reorder() method for factors, slightly extending that in lattice. Contributed by Deepayan Sarkar. o Replaying a plot (with replayPlot() or via autoprinting) now automagically opens a device if none is open. o replayPlot() issues a warning if an attempt is made to replay a plot that was recorded using a different R version (the format for recorded plots is not guaranteed to be stable across different R versions). The Windows-menu equivalent (History...Get from variable) issues a similar warning. o reshape() can handle multiple 'id' variables. o It is now possible to specify colours with a full alpha transparency channel via the new 'alpha' argument to the rgb() and hsv() functions, or as a string of the form "#RRGGBBAA". NOTE: most devices draw nothing if a colour is not opaque, but PDF and Quartz devices will render semitransparent colours. A new argument 'alpha' to the function col2rgb() provides the ability to return the alpha component of colours (as well as the red, green, and blue components). o save() now checks that a binary connection is used. o seek() on connections now accepts and returns a double for the file position. This allows >2Gb files to be handled on a 64-bit platform (and some 32-bit platforms). o source() with 'echo = TRUE' uses the function source attribute when displaying commands as they are parsed. o setClass() and its utilities now warn if either superclasses or classes for slots are undefined. (Use setOldClass to register S3 classes for use as slots) o str(obj) now displays more reasonably the STRucture of S4 objects. It is also improved for language objects and lists with promise components. The method for class "dendrogram" has a new argument 'stem' and indicates when it's not printing all levels (as typically when e.g., 'max.level = 2'). Specifying 'max.level = 0' now allows to suppress all but the top level for hierarchical objects such as lists. This is different to previous behavior which was the default behavior of giving all levels is unchanged. The default behavior is unchanged but now specified by 'max.level = NA'. o system.time() has a new argument 'gcFirst' which, when TRUE, forces a garbage collection before timing begins. o tail() of a matrix now displays the original row numbers. o The default method for text() now coerces a factor to character and not to its internal codes. This is incompatible with S but seems what users would expect. It now also recycles (x,y) to the length of 'labels' if that is longer. This is now compatible with grid.text() and S. (See also PR#7084.) o TukeyHSD() now labels comparisons when applied to an interaction in an aov() fit. It detects non-factor terms in 'which' and drops them if sensible to do so. o There is now a replacement method for window(), to allow a range of values of time series to be replaced by specifying the start and end times (and optionally a frequency). o If writeLines() is given a connection that is not open, it now attempts to open it in mode = "wt" rather than the default mode specified when creating the connection. o The screen devices x11(), windows() and quartz() have a new argument 'bg' to set the default background colour. o Subassignments involving NAs and with a replacement value of length > 1 are now disallowed. (They were handled inconsistently in R < 2.0.0, see PR#7210.) For data frames they are disallowed altogether, even for logical matrix indices (the only case which used to work). o The way the comparison operators handle a list argument has been rationalized so a few more cases will now work -- see ?Comparison. o Indexing a vector by a character vector was slow if both the vector and index were long (say 10,000). Now hashing is used and the time should be linear in the longer of the lengths (but more memory is used). o Printing a character string with embedded nuls now prints the whole string, and non-printable characters are represented by octal escape sequences. o Objects created from a formally defined class now include the name of the corresponding package as an attribute in the object's class. This allows packages with namespaces to have private (non-exported) classes. o Changes to package 'grid': - Calculation of number of circles to draw in circleGrob now looks at length of y and r as well as length of x. - Calculation of number of rectangles to draw in rectGrob now looks at length of y, w, and h as well as length of x. - All primitives (rectangles, lines, text, ...) now handle non-finite values (NA, Inf, -Inf, NaN) for locations and sizes. Non-finite values for locations, sizes, and scales of viewports result in error messages. There is a new vignette ("nonfinite") which describes this new behaviour. - Fixed (unreported) bug in drawing circles. Now checks that radius is non-negative. - downViewport() now reports the depth it went down to find a viewport. Handy for "going back" to where you started, e.g., ... depth <- downViewport("vpname") upViewport(depth) - The "alpha" gpar() is now combined with the alpha channel of colours when creating a gcontext as follows: (internal C code) finalAlpha = gpar("alpha")*(R_ALPHA(col)/255) This means that gpar(alpha=) settings now affect internal colours so grid alpha transparency settings now are sent to graphics devices. The alpha setting is also cumulative. For example, ... grid.rect(width=0.5, height=0.5, gp=gpar(fill="blue")) # alpha = 1 pushViewport(viewport(gp=gpar(alpha=0.5))) grid.rect(height=0.25, gp=gpar(fill="red")) # alpha = 0.5 pushViewport(viewport(gp=gpar(alpha=0.5))) grid.rect(width=0.25, gp=gpar(fill="red")) # alpha = 0.25 ! - Editing a gp slot in a grob is now incremental. For example ... grid.lines(name="line") grid.edit("line", gp=gpar(col="red")) # line turns red grid.edit("line", gp=gpar(lwd=3)) # line becomes thick # AND STAYS red - The "cex" gpar is now cumulative. For example ... grid.rect(height=unit(4, "char")) # cex = 1 pushViewport(viewport(gp=gpar(cex=0.5))) grid.rect(height=unit(4, "char")) # cex = 0.5 pushViewport(viewport(gp=gpar(cex=0.5))) grid.rect(height=unit(4, "char")) # cex = 0.125 !!! - New childNames() function to list the names of children of a gTree. - The "grep" and "global" arguments have been implemented for grid.[add|edit|get|remove]Grob() functions. The "grep" argument has also been implemented for the grid.set() and setGrob(). - New function grid.grab() which creates a gTree from the current display list (i.e., the current page of output can be converted into a single gTree object with all grobs on the current page as children of the gTree and all the viewports used in drawing the current page in the childrenvp slot of the gTree). - New "lineend", "linejoin", and "linemitre" gpar()s: line end can be "round", "butt", or "square". line join can be "round", "mitre", or "bevel". line mitre can be any number larger than 1 (controls when a mitre join gets turned into a bevel join; proportional to angle between lines at join; very big number means that conversion only happens for lines that are almost parallel at join). - New grid.prompt() function for controlling whether the user is prompted before starting a new page of output. Grid no longer responds to the par(ask) setting in the "graphics" package. o The tcltk package has had the tkcmd() function renamed as tcl() since it could be used to invoke commands that had nothing to do with Tk. The old name is retained, but will be deprecated in a future release. Similarly, we now have tclopen(), tclclose(), tclread(), tclputs(), tclfile.tail(), and tclfile.dir() replacing counterparts starting with "tk", with old names retained for now. UTILITIES o R CMD check now checks for file names in a directory that differ only by case. o R CMD check now checks Rd files using R code from package tools, and gives refined diagnostics about "likely" Rd problems (stray top-level text which is silently discarded by Rdconv). o R CMD INSTALL now fails for packages with incomplete/invalid DESCRIPTION metadata, using new code from package tools which is also used by R CMD check. o list_files_with_exts (package tools) now handles zipped directories. o Package 'tools' now provides Rd_parse(), a simple top-level parser/analyzer for R documentation format. o tools::codoc() (and hence R CMD check) now checks any documentation for registered S3 methods and unexported objects in packages with namespaces. o Package 'utils' contains several new functions: - Generics toBibtex() and toLatex() for converting R objects to BibTeX and LaTeX (but almost no methods yet). - A much improved citation() function which also has a package argument. By default the citation is auto-generated from the package DESCRIPTION, the file 'inst/CITATION' can be used to override this, see help(citation) and help(citEntry). - sessionInfo() can be used to include version information about R and R packages in text or LaTeX documents. DOCUMENTATION o The DVI and PDF manuals are now all made on the paper specified by R_PAPERSIZE (default 'a4'), even the .texi manuals which were made on US letter paper in previous versions. o The reference manual now omits 'internal' help pages. o There is a new help page shown by help("Memory-limits") which documents the current design limitations on large objects. o The format of the LaTeX version of the documentation has changed. The old format is still accepted, but only the new resolves cross-references to object names containing _, for example. o HTML help pages now contain a reference to the package and version in the footer, and HTML package index pages give their name and version at the top. o All manuals in the 2.x series have new ISBN numbers. o The 'R Data Import/Export' manual has been revised and has a new chapter on `Reading Excel spreadsheets'. C-LEVEL FACILITIES o The PACKAGE argument for .C/.Call/.Fortran/.External can be omitted if the call is within code within a package with a namespace. This ensures that the native routine being called is found in the DLL of the correct version of the package if multiple versions of a package are loaded in the R session. Using a namespace and omitting the PACKAGE argument is currently the only way to ensure that the correct version is used. o The header Rmath.h contains a definition for R_VERSION_STRING which can be used to track different versions of R and libRmath. o The Makefile in src/nmath/standalone now has 'install' and 'uninstall' targets -- see the README file in that directory. o More of the header files, including Rinternals.h, Rdefines.h and Rversion.h, are now suitable for calling directly from C++. o Configure looks to a suitable option for inlining C code which made available as macro R_INLINE: see `Writing R Extensions' for further details. DEPRECATED & DEFUNCT o Direct use of R INSTALL|REMOVE|BATCH|COMPILE|SHLIB has been removed: use R CMD instead. o La.eigen(), tetragamma(), pentagamma(), package.contents() and package.description() are defunct. o The undocumented function newestVersion() is no longer exported from package utils. (Mainly because it was not completely general.) o C-level entry point ptr_R_GetX11Image has been removed, as it was replaced by R_GetX11Image at 1.7.0. o The undocumented C-level entry point R_IsNaNorNA has been removed. It was used in a couple of packages, and should be replaced by a call to the documented macro ISNAN. o The gnome/GNOME graphics device is now defunct. INSTALLATION CHANGES o Arithmetic supporting +/-Inf, NaNs and the IEC 60559 (aka IEEE 754) standard is now required -- the partial and often untested support for more limited arithmetic has been removed. The C99 macro isfinite is used in preference to finite if available (and its correct functioning is checked at configure time). Where isfinite or finite is available and works, it is used as the substitution value for R_FINITE. On some platforms this leads to a performance gain. (This applies to compiled code in packages only for isfinite.) o The dynamic libraries libR and libRlapack are now installed in R_HOME/lib rather than R_HOME/bin. o When --enable-R-shlib is specified, the R executable is now a small executable linked against libR: see the R-admin manual for further discussion. The 'extra' libraries bzip2, pcre, xdr and zlib are now compiled in a way that allows the code to be included in a shared library only if this option is specified, which might improve performance when it is not. o The main R executable is now R_HOME/exec/R not R_HOME/R.bin, to ease issues on MacOS X. (The location is needed when debugging core dumps, on other platforms.) o Configure now tests for 'inline' and alternatives, and the src/extra/bzip2 code now (potentially) uses inlining where available and not just under gcc. o The XPG4 sed is used on Solaris for forming dependencies, which should now be done correctly. o Makeinfo 4.5 or later is now required for building the HTML and Info versions of the manuals. However, binary distributions need to be made with 4.7 or later to ensure some of the links are correct. o f2c is not allowed on 64-bit platforms, as it uses longs for Fortran integers. o There are new options on how to make the PDF version of the reference manual -- see the 'R Administration and Installation Manual' section 2.2. o The concatenated Rd files in the installed 'man' directory are now compressed and the R CMD check routines can read the compressed files. o There is a new configure option --enable-linux-lfs that will build R with support for > 2Gb files on suitably recent 32-bit Linux systems. PACKAGE INSTALLATION CHANGES o The DESCRIPTION file of packages may contain a 'Imports:' field for packages whose namespaces are used but do not need to be attached. Such packages should no longer be listed in 'Depends:'. o There are new optional fields 'SaveImage', 'LazyLoad' and 'LazyData' in the DESCRIPTION file. Using 'SaveImage' is preferred to using an empty file 'install.R'. o A package can contain a file 'R/sysdata.rda' to contain system datasets to be lazy-loaded into the namespace/package environment. o The packages listed in 'Depends' are now loaded before a package is loaded (or its image is saved or it is prepared for lazy loading). This means that almost all uses of R_PROFILE.R and install.R are now unnecessary. o If installation of any package in a bundle fails, R CMD INSTALL will back out the installation of all of the bundle, not just the failed package (on both Unix and Windows). BUG FIXES o Complex superassignments were wrong when a variable with the same name existed locally, and were not documented in R-lang. o rbind.data.frame() dropped names/rownames from columns in all but the first data frame. o The dimnames<- method for data.frames was not checking the validity of the row names. o Various memory leaks reported by valgrind have been plugged. o gzcon() connections would sometimes read the crc bytes from the wrong place, possibly uninitialized memory. o Rd.sty contained a length \middle that was not needed after a revision in July 2000. It caused problems with LaTeX systems based on e-TeX which are starting to appear. o save() to a connection did not check that the connection was open for writing, nor that non-ascii saves cannot be made to a text-mode connection. o phyper() uses a new algorithm based on Morten Welinder's bug report (PR#6772). This leads to faster code for large arguments and more precise code, e.g. for phyper(59, 150,150, 60, lower=FALSE). This also fixes bug (PR#7064) about fisher.test(). o print.default(*, gap = ) now in principle accepts all non-negative values . o smooth.spline(...)$pen.crit had a typo in its computation; note this was printed in print.smooth.spline(*) but not used in other "smooth.spline" methods. o write.table() handles zero-row and zero-column inputs correctly. o debug() works on trivial functions instead of crashing. (PR#6804) o eval() could alter a data.frame/list second argument, so with(trees, Girth[1] <- NA) altered 'trees' (and any copy of 'trees' too). o cor() could corrupt memory when the standard deviation was zero. (PR#7037) o inverse.gaussian() always printed 1/mu^2 as the link function. o constrOptim() now passes ... arguments through optim to the objective function. o object.size() now has a better estimate for character vectors: it was in general too low (but only significantly so for very short character strings) but over-estimated NA and duplicated elements. o quantile() now interpolates correctly between finite and infinite values (giving +/-Inf rather than NaN). o library() now gives more informative error messages mentioning the package being loaded. o Building the reference manual no longer uses roman upright quotes in typewriter output. o model.frame() no longer builds invalid data frames if the data contains time series and rows are omitted by na.action. o write.table() did not escape quotes in column names. (PR#7171) o Range checks missing in recursive assignments using [[ ]]. (PR#7196) o packageStatus() reported partially-installed bundles as installed. o apply() failed on an array of dimension >=3 when for each iteration the function returns a named vector of length >=2. (PR#7205) o The GNOME interface was in some circumstances failing if run from a menu -- it needed to always specify that R be interactive. o depMtrxToStrings (part of pkgDepends) applied nrow() to a non-matrix and aborted on the result. o Fix some issues with nonsyntactical names in modelling code (PR#7202), relating to backquoting. There are likely more. o Support for S4 classes that extend basic classes has been fixed in several ways. as() methods and x at .Data should work better. o hist() and pretty() accept (and ignore) infinite values. (PR#7220) o It is no longer possible to call gzcon() more than once on a connection. o t.test() now detects nearly-constant input data. (PR#7225) o mle() had problems if ndeps or parscale was supplied in the control arguments for optim(). Also, the profiler is now more careful to reevaluate modified mle() calls in its parent environment. o Fix to rendering of accented superscripts and subscripts e.g., expression((b[dot(a)])). (Patch from Uwe Ligges.) o attach(*, pos=1) now gives a warning (and will give an error). o power.*test() now gives an error when 'sig.level' is outside [0,1]. (PR#7245) o Fitting a binomial glm with a matrix response lost the names of the response, which should have been transferred to the residuals and fitted values. o print.ts() could get the year wrong because rounding issue (PR#7255) -- 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 From murdoch at stats.uwo.ca Tue Oct 5 21:52:22 2004 From: murdoch at stats.uwo.ca (Duncan Murdoch) Date: Tue, 05 Oct 2004 15:52:22 -0400 Subject: [R] R 2.0.0 is released In-Reply-To: References: Message-ID: On 04 Oct 2004 17:29:39 +0200, Peter Dalgaard wrote : > >I've rolled up R-2.0.0.tar.gz a short while ago. This is a new version >with a number of new features. See below for the details. > >As was the case with R 1.0.0, this new version represents a coming of >age more than a radical change to R. We do plan to celebrate the new >major version with press releases and such. > >The release will be available from > >http://cran.r-project.org/src/base/R-2/R-2.0.0.tar.gz > >or you might wait for it to be mirrored at a CRAN site nearer to you. >Binaries for various platforms will appear in due course. The Windows binary build is now on CRAN at http://cran.r-project.org/bin/windows/base and the mirrors, e.g. the U.S. mirror http://cran.us.r-project.org/bin/windows/base A few of the links on the page are broken today, but should be fixed tomorrow. Duncan Murdoch From tlumley at u.washington.edu Wed Oct 6 20:00:08 2004 From: tlumley at u.washington.edu (Thomas Lumley) Date: Wed, 6 Oct 2004 11:00:08 -0700 (PDT) Subject: R Newsletter Message-ID: Issue 4/2 of the R Newsletter is up on www.r-project.org. This issue is especially commended to your attention since it has an article by Brian Ripley describing the largest change in R 2.0.0, lazy loading of packages. -thomas Thomas Lumley Assoc. Professor, Biostatistics tlumley at u.washington.edu University of Washington, Seattle From p.dalgaard at biostat.ku.dk Mon Nov 15 16:07:05 2004 From: p.dalgaard at biostat.ku.dk (Peter Dalgaard) Date: 15 Nov 2004 16:07:05 +0100 Subject: R-2.0.1 is released Message-ID: I've rolled up R-2.0.1.tgz a short while ago. This is a maintenance version mainly to fix a number of minor bugs and issues. (Some rather nasty ones were Windows-specific - please check the CHANGES file for those.) You can get it from http://cran.r-project.org/src/base/R-2.0.1.tar.gz or wait for it to be mirrored at a CRAN site nearer to you. Binaries for various platforms will appear in due course. There is also a version split for floppies. These are the md5sums for the freshly created files, in case you wish to check that they are uncorrupted: 6f75951d61cc321f597ea28ad43a9ada INSTALL b5519f795224506e7702f74dbbb152b1 NEWS 1a2248b10e3dbf078559705a25b52ca4 ONEWS fb47b1fdef4323031e24d541a2f36b2b R-2.0.1.tar.gz 4e334bc539e5a2d8cc3e6b8cca4171be R-2.0.1.tar.gz-split.aa bc7cb22034948998a4eeb18006a53094 R-2.0.1.tar.gz-split.ab b73f587c39599ce47bba00544f2cd100 R-2.0.1.tar.gz-split.ac bbec006c26c6a236c6b5e98989a2f0a2 R-2.0.1.tar.gz-split.ad 8d04842319525ba6cead4bff1b259263 R-2.0.1.tar.gz-split.ae e3d1af261c7ea83820597f6fef9e9449 R-2.0.1.tar.gz-split.af 3595c1939484762a6440a957908023ce R-2.0.1.tar.gz-split.ag 4492e468cc5003e06a2a85c496ff2672 R-2.0.1.tar.gz-split.ah fb47b1fdef4323031e24d541a2f36b2b R-latest.tgz b5509d1e6232e66dee66d9644bf65490 README 7a5a7cfe9419affd9574aba3cf525741 RESOURCES Here is the relevant bit of the NEWS file: CHANGES IN R VERSION 2.0.1 NEW FEATURES o Platform equivalence in library() is tested by a new function testPlatformEquivalence() which ignores the 'vendor' field and can be customized by cognescenti. o The assignment form of split() allows recycling of vectors within the value list. In particular, things like split(x, g) <- lapply(split(x, g), mean) now work DOCUMENTATION o Manual `Writing R Extensions' has new sections on writing portable packages and on writing new front-ends for R -- the latter will be more comprehensive in R 2.1.0 which has new public header files. DEPRECATED & DEFUNCT o The aqua module in MacOS X is deprecated. o Capabilities "bzip2", "GNOME, "libz" and "PCRE" are deprecated. o The GNOME GUI on Unix-alikes is deprecated as part of R; it will be available in another form as from R 2.1.0. o The undocumented use of UseMethod() with no argument is now formally deprecated. INSTALLATION CHANGES o Building on Alpha OSF/1 no longer forces the C flag -std1, which appears to be no longer needed. (PR#7257) o The compiler flag -mieee-fp is no longer used on i386 Linux (these days it is only passed to the linker and was only invoked for compilation steps). o -D__NO_MATH_INLINES is only used on older ix86 glibc-based systems which need it (tested at configure time). This leads to small improvements in speed and accuracy on modern systems. o If makeinfo >= 4.5 is not available, warnings are given that some of the HTML manuals will be missing, and the index page given by help.start() will link to CRAN versions of those manuals. o Files aclocal.m4 and acinclude.m4 used in maintainer builds are not longer included in the distribution. C-LEVEL FACILITIES o It was not clear in 'Writing R Extensions' that some of the entry points in the 'Utilities' section were not declared in (they were in ). Now all the entry points in that section are declared in , included by . BUG FIXES o The grid.grab() function in package grid would throw an error if there were no viewports pushed (now returns NULL). o model.frame.default() takes row names from the response variable if that has suitable names and there is no 'data' argument. (This follows S but was not previously implemented in R.) o write.table() was not respecting the 'dec' argument for complex numbers. o write.table() printed a mixture of numeric and complex numbers as all complex. (PR#7260) o R CMD INSTALL failed with versioned installs on packages which save images (only). o dlogis() gave NaN not 0 for large negative arguments. o Importing from another namespace was broken for versioned installs, incorrectly reporting something like "package 'imported_from' does not have a name space". o The GNOME interface under Linux/Unix was broken. (PR#7276) o For the jpeg/png devices under Linux/Unix, under certain rare circumstances clipping needed to be cleared before starting a new page. (PR#7270, which has been the case since the devices were introduced in 1.1.0.) o First lattice plot (first grid.newpage() call) did not start a new page IF there had been a previous traditional graphics plot (on the same device). o Using install.packages() to install the same package to more than one library gave an incorrect warning message. (If there were two or more such packages it might give an error.) o .packages(all.available=TRUE) returned packages with an invalid version field in their DESCRIPTION whereas .find.packages() and packageDescription() did not. Now all do not. o packageDescription() now correctly reports that a package does not exist, rather than that its DESCRIPTION file is 'missing or broken'. o 'make dist' from builddir != sourcedir was copying not linking recommended packages to *.tgz. o Slots in prototype objects can inherit from locally defined classes (which were not being found correctly before). o Several fixes to the behavior of as() when there are either coerce= or replace= methods supplied in a call to setIs(). Related fixes to setIs() to handle correctly previous methods, if there were any. o splinefun(1[0], 1[0])(1) doesn't segfault anymore (PR#7290). spline() and splinefun() now also work with missing values by omiting them. o ecdf() was failing on inputs containing NAs. (Part of PR#7292) o tools:::.install_package_description was splitting the Built: field across lines on platforms with very long names. o capabilities() was wrong for the Aqua GUI on MacOS X. o Using Rprof() with a non-writable 'file' argument is now a non-fatal error and does not abort R. o binom.test() did not deparse its arguments early enough such that the reported data were ugly if x was a table. o Systems based on glibc, including those using R's substitute for strptime, were handling strptime("2001", "%Y") incorrectly, in some cases crashing. R's substitute code has been corrected (but problems may remain if glibc is used). See the ?strptime for what should happen (which is system-specific). o untrace() after trace() failed if package 'methods' was attached. (PR#7301) o summary.stepfun() was reporting for n > 6 summaries of the knots and levels as the actual values. Both print() and summary() methods called the constant values "step heights", although they were not the heights of the steps. o is.na/is.nan() were giving spurious warnings if applied to a raw vector. o is.atomic() gave incorrect result (false) for a raw vector. o rank() and order() accepted raw and list inputs, but did not give a sensible answer (always 1:n). Similarly, partial sorts of a raw vector were accepted but did nothing. o require() without a version argument tried for an unversioned load of a package even though a versioned install was already loaded. This often led to a message that a required package was being loaded when it was not actually being loaded. o str() made use of attributes() instead of slot(), and hence didn't properly print NULL slots. o contrib.url() now handles URLs ending in '/' correctly. o str() removed any class from externalptr objects. o logLik() and hence AIC() failed or gave incorrect answers on "lm" fits with na.action = na.exclude (and perhaps other na.actions's except na.omit and na.fail). o pmax() and pmin() sometimes used NAs in internal subassignments, and sometimes these failed. o Subassigning an expression, e.g. expr[2] <- 1, could leave an invalid object and so cause a segfault. (PR#7326) o download/install.packages() would misbehave if there was more than one version of a package in a repository. o sort(partial=) silently ignored some other arguments: using 'decreasing' or 'index.return' or supplying a factor are now errors. o The ave() function had trouble if the grouping contained unused levels. o read.fwf() got confused by skip > 0 and could infinite loop under some circumstances. (PR#7350) o upgrade(x, ask = FALSE) was broken for a "packageStatus" object. o Class "raw" had been omitted from the list of basic classes in the "methods" package and so could not be used in S4 classes. o Function getGroupMembers(), part of the definition of S4 classes, had been promised for release 2.0, but slipped through. -- 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 From p.dalgaard at biostat.ku.dk Mon Nov 15 16:41:04 2004 From: p.dalgaard at biostat.ku.dk (Peter Dalgaard) Date: 15 Nov 2004 16:41:04 +0100 Subject: R-2.0.1 is released Message-ID: Whoops! You can get it from http://cran.r-project.org/src/base/R-2/R-2.0.1.tar.gz (Notice the R-2 subdir) I also forgot to sign it on behalf of The R Core Team. -- 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