From p.dalgaard at biostat.ku.dk Mon Apr 18 14:36:11 2005 From: p.dalgaard at biostat.ku.dk (Peter Dalgaard) Date: 18 Apr 2005 14:36:11 +0200 Subject: R-2.1.0 is released Message-ID: I've rolled up R-2.1.0.tar.gz a short while ago. This version contains several substantial changes and additions, perhaps most notably the UTF8 and Internationalization changes. See the full list of changes below. You can get it from http://cran.r-project.org/src/base/R-2/R-2.1.0.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 (does anyone use these any more?). 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: 94d55d512a9ba36caa9b7df079bae19f COPYING d8045f3b8f929c1cb29a1e3fd737b499 COPYING.LIB 70447ae7f2c35233d3065b004aa4f331 INSTALL 8b78e12b100a6834fdada2dfaab98ab0 NEWS 88bbd6781faedc788a1cbd434194480c ONEWS 4f004de59e24a52d0f500063b4603bcb OONEWS e7f92ef0c2bc5b772a83f42a5ed504c9 R-2.1.0.tar.gz d45b1084f91fcfeebbb69cc2dd9ed6e1 R-2.1.0.tar.gz-split.aa 18b34d82302a68a86510da6e0dd9a193 R-2.1.0.tar.gz-split.ab d242b365ed1398031ff26d31a6da9c1c R-2.1.0.tar.gz-split.ac b992e7d10baf662ede52a0c156f51d86 R-2.1.0.tar.gz-split.ad a2c559b4b1c87f5815bec9e8e2b7bd31 R-2.1.0.tar.gz-split.ae 033ae9f596d74f9780f98c9b6cab31df R-2.1.0.tar.gz-split.af ed0fd6939e8e84b0a4a2a01d92cc7f96 R-2.1.0.tar.gz-split.ag 2d1379175456b308328d9af09e2726a3 R-2.1.0.tar.gz-split.ah bbb8fd837e27c931b9921548ee4c5c28 R-2.1.0.tar.gz-split.ai e7f92ef0c2bc5b772a83f42a5ed504c9 R-latest.tar.gz 56a780cdec835c5c598f8dfc0738f7f3 README Here is the relevant bit of the NEWS file: CHANGES IN R VERSION 2.1.0 USER-VISIBLE CHANGES o box plots {by boxplot() or bxp()} now have the median line three times the normal line width in order to distinguish it from the quartile ones. o Unix-alike versions of R can now be used in UTF-8 locales on suitably equipped OSes. See the internationalization section below. o The meaning of 'encoding' for a connection has changed: See the internationalization section below. o There has been some rationalization of the format of warning/error messages, to make them easier to translate. Generally names of functions and arguments are single-quoted, and classes double-quoted. o Reading text files with embedded "\" (as in Windows file names) may now need to use scan(* , allowEscapes = FALSE), see also below. NEW FEATURES o %% now warns if its accuracy is likely to be affected by lack of precision (as in 1e18 %% 11, the unrealistic expectation of PR#7409), and tries harder to return a value in range when it is. o abbreviate() now warns if used with non-ASCII chars, as the algorithm is designed for English words. o The default methods for add1() and drop1() check for changes in the number of cases in use. The "lm" and "glm" methods for add1() quoted the model on the original fitted values when using (with a warning) a smaller set of cases for the expanded models. o Added alarm() function to generate a bell or beep or visual alert. o all/any() now attempt to coerce their arguments to logical, as documented in the Blue Book. This means e.g. any(list()) works. o New functions for multivariate linear models: anova.mlm(), SSD(), estVar(), mauchley.test() (for sphericity). vcov() now does something more sensible for "mlm" class objects. o as.data.frame.table() has a new argument 'responseName' (contributed by Bill Venables). o as.dist() and cophenetic() are now generic, and the latter has a new method for objects of class "dendrogram". o as.ts() is now generic. o binomial() has a new "cauchit" link (suggested by Roger Koenker). o chisq.test() has a new argument 'rescale.p'. It is now possible to simulate (slowly) the P value also in the 1D case (contributed by Rolf Turner). o choose(n,k) and lchoose(.) now also work for arbitrary (real) n in accordance with the general binomial theorem. choose(*,k) is more accurate (and faster) for small k. o Added colorRamp() and colorRampPalette() functions for color interpolation. o colSums()/rowSums() now allow arrays with a zero-length extent (requested by PR#7775). o confint() has stub methods for classes "glm" and "nls" that invoke those in package MASS. This avoids using the "lm" method for "glm" objects if MASS is not attached. confint() has a default method using asymptotic normality. o contr.SAS() has been moved from the 'nlme' package to the 'stats' package. o New function convertColors() maps between color spaces. colorRamp() uses it. o The cov() function in the non-Pearson cases now ranks data after removal of missing values, not before. The pairwise-complete method should now be consistent with cor.test. (Code contributed by Shigenobu Aoki.) o Added delayedAssign() function to replace delay(), which is now deprecated. o dir.create() has a new argument 'recursive' serving the same purpose as Unix's mkdir -p. o do.call() now takes either a function or a character string as its first argument. The supplied arguments can optionally be quoted. o duplicated() and unique() now accept "list" objects, but are fast only for simple list objects. o ecdf() now has jumps of the correct size (a multiple of 1/n) if there are ties. (Wished by PR#7292). o eff.aovlist() assumed orthogonal contrasts for any term with more than one degree of freedom: this is now documented and checked for. Where each term only occurs in only one stratum the efficiencies are all one: this is detected and orthogonal contrasts are not required. o New function encodeString() to encode character strings in the same way that printing does. o file("clipboard") now work for reading the primary selection on Unix-alikes with an active X11 display. (It has long worked for reading and writing under Windows.) The secondary selection can also be read: see ?file. file() now allows mode "w+b" as well as "w+". o file.append() has been tuned, including for the case of appending many files to a single file. o Functions flush.console() and select.list() are now available on all platforms. There is a Tcl/Tk-based version of select.list() called tk_select.list() in package tcltk. o gc() now reports maximum as well as current memory use. o A new function getGraphicsEvent() has been added which will allow mouse or keyboard input from a graphics device. (NB: currently only the Windows screen device supports this function. This should improve before the 2.1.0 release.) o New functions gray.colors()/grey.colors() for gray color palettes. o grep(), gsub(), sub() and regexpr() now always attempt to coerce their 'pattern', 'x', 'replacement' and 'text' arguments to character. Previously this was undocumented but done by [g]sub() and regexpr() for some values of their other arguments. (Wish of PR#7742.) o gsub/sub() have a new 'fixed' method. o New function hcl() for creating colors for a given hue, chroma and luminance (i.e. perceptual hsv). o isTRUE() convenience function to be used for programming. o kmeans() now returns an object of class "kmeans" which has a print() method. Two alternative algorithms have been implemented. If the number of centres is supplied, it has a new option of multiple random starts. o The limits on the grid size in layout() are now documented, and have been raised somewhat by using more efficient internal structures. o legend() now accepts positioning by keyword, e.g. "topleft", and can put a title within the legend. (Suggested by Elizabeth Purdom in PR#7400.) o mahalanobis() now has a '...' argument which is passed to solve() for computing the inverse of the covariance matrix, this replaces the former 'tol.inv' argument. o menu() uses a multi-column layout if possible for more than 10 choices. menu(graphics = TRUE) is implemented on most platforms via select.list() or tk_select.list(). o New function message() in 'base' for generating "simple" diagnostic messages, replacing such a function in the 'methods' package. o na.contiguous() is now (S3) generic with first argument renamed to 'object'. o New function normalizePath() to find canonical paths (and on Windows, canonical names of components). o The default in options("expressions") has been increased to 5000, and the maximal settable value to 500000. o p.adjust() has a new method "BY". o pbeta() now uses a different algorithm for large values of at least one of the shape parameters, which is much faster and is accurate and reliable for very large values. (This affects pbinom(), pf(), qbeta() and other functions using pbeta at C level.) o pch="." now by default produces a rectangle at least 0.01" per side on high-resolution devices. (It used to be one-pixel square even on high-resolution screens and Windows printers, but 1/72" on postscript() and pdf() devices.) Additionally, the size is now scalable by 'cex'; see ?points and note that the details are subject to change. o pdf() now responds to the 'paper' and 'pagecentre' arguments. The default value of 'paper' is "special" for backward-compatibility (this is different from the default for postscript()). o plot.data.frame() tries harder to produce sensible plots for non-numeric data frames with one or two columns. o The predict() methods for "prcomp" and "princomp" now match the columns of 'newdata' to the original fit using column names if these are available. o New function recordGraphics() to encapsulate calculations and graphics output together on graphics engine display list. To be used with care. o New function RSiteSearch() to query R-related resources on-line (contributed by Jonathan Baron and Andy Liaw). o scan() arranges to share storage of duplicated character strings read in: this can dramatically reduce the memory requirements for large character vectors which will subsequently be turned into factors with relatively few levels. For a million items this halved the time and reduced storage by a factor of 20. scan() has a new argument 'allowEscapes' (default TRUE) that controls when C-style escapes in the input are interpreted. Previously only \n and \r were interpreted, and then only within quoted strings when no separator was supplied. scan() used on an open connection now pushes back on the connection its private `ungetc' and so is safer to use to read partial lines. o scatter.smooth() and loess.smooth() now handle missing values in their inputs. o seq.Date() and seq.POSIXt() now allow 'to' to be before 'from' if 'by' is negative. o sprintf() has been enhanced to allow the POSIX/XSI specifiers like "%2$6d", and also accepts "%x" and "%X". sprintf() does limited coercion of its arguments. sprintf() accepts vector arguments and operates on them in parallel (after re-cycling if needed). o New function strtrim() to trim character vectors to a display width, allowing for double-width characters in multi-byte character sets. o subset() now has a method for matrices, similar to that for data frames. o Faster algorithm in summaryRprof(). o sunflowerplot() has new arguments 'col' and 'bg'. o sys.function() now has argument 'which' (as has long been presaged on its help page). o Sys.setlocale("LC_ALL", ) now only sets the locale categories which R uses, and Sys.setlocale("LC_NUMERIC", ) now gives a warning (as it can cause R to malfunction). o unclass() is no longer allowed for environments and external pointers (since these cannot be copied and so unclass() was destructive of its argument). You can still change the "class" attribute. o File-name matching is no longer case-insensitive with unz() connections, even on Windows. o New argument 'immediate.' to warning() to send an immediate warning. o New convenience wrappers write.csv() and write.csv2(). o There is a new version for write.table() which is implemented in C. For simple matrices and data frames this is several times faster than before, and uses negligible memory compared to the object size. The old version (which no longer coerces a matrix to a data frame and then back to a matrix) is available for now as write.table0(). o The functions xinch(), yinch(), and xyinch() have been moved from package 'grDevices' into package 'graphics'. o Plotmath now allows underline in expressions. (PR#7286, contributed by Uwe Ligges.) o BATCH on Unix no longer sets --gui="none" as the X11 module is only loaded if needed. o The X11 module (and the hence X11(), jpeg() and png() devices and the X-based dataentry editor) is now in principle available under all Unix GUIs except --gui="none", and this is reflected in capabilities(). capabilities("X11") determines if an X server can be accessed, and so is more likely to be accurate. o Printing of arrays now honours the 'right' argument if there are more than two dimensions. o Tabular printing of numbers now has headers right-justified, as they were prior to version 1.7.0 (spotted by Rob Baer). o Lazy-loading databases are now cached in memory at first use: this enables R to run much faster from slow file systems such as USB flash drives. There is a small (less than 2Mb) increase in default memory usage. o The implicit class structure for numeric vectors has been changed, so that integer/real vectors try first methods for class "integer"/"double" and then those for class "numeric". The implicit classes for matrices and arrays have been changed to be "matrix"/"array" followed by the class(es) of the underlying vector. o splines::splineDesign() now allows the evaluation of a B-spline basis everywhere instead of just inside the "inner" knots, by setting the new argument `outer.ok = TRUE'. o Hashing has been tweaked to use half as much memory as before. o Readline is not used for tilde expansion when R is run with --no-readline, nor from embedded applications. Then "~name" is no longer expanded, but "~" still is. o The regular expression code is now based on that in glibc 2.3.3. It has stricter conformance to POSIX, so metachars such as { } + * may need to be escaped where before they did not (but could have been). o New encoding 'TeXtext.enc' improves the way postscript() works with Computer Modern fonts. o Replacement in a non-existent column of a data frame tries harder to create a column of the correct length and so avoid a corrupt data frame. o For Windows and readline-based history, the saved file size is re-read from R_HISTSIZE immediately before saving. o Collected warnings during start-up are now printed before the initial prompt rather than after the first command. o Changes to package 'grid': - preDrawDetails(), drawDetails(), and postDrawDetails() methods are now recorded on the graphics engine display list. This means that calculations within these methods are now run when a device is resized or when output is copied from one device to another. - Fixed bug in grid.text() when 'rot' argument has length 0. (privately reported by Emmanuel Paradis) - New getNames() function to return just the names of all top-level grobs on the display list. - Recording on the grid display list is turned off within preDrawDetails(), drawDetails(), and postDrawDetails() methods. - Grid should recover better from errors or user-interrupts during drawing (i.e., not leave you in a strange viewport or with strange graphical parameter settings). - New function grid.refresh() to redraw the grid display list. - New function grid.record() to capture calculations with grid graphics output. - grobWidth and grobHeight ("grobwidth" and "grobheight" units) for primitives (text, rects, etc, ...) are now calculated based on a bounding box for the relevant grob. NOTE: this has changed the calculation of the size of a scalar rect (or circle or lines). - New arguments 'warn' and 'wrap' for function grid.grab() - New function grid.grabExpr() which captures the output from an expression (i.e., not from the current scene) without doing any drawing (i.e., no impact on the current scene). - upViewport() now (invisibly) returns the path that it goes up (suggested by Ross Ihaka). - The 'gamma' gpar has been deprecated (this is a device property not a property of graphical objects; suggested by Ross Ihaka). - New 'lex' gpar; a line width multiplier. - grid.text() now handles any language object as mathematical annotation (instead of just expressions). - plotViewport() has default value for 'margins' argument (that match the default value for par(mar)). - The 'extension' argument to dataViewport() can now be vector, in which case the first value is used to extend the xscale and the second value is used to extend the y scale. (suggested by Ross Ihaka). - All 'just' arguments (for viewports, layouts, rectangles, text) can now be numeric values (typically between 0 [left] and 1 [right]) as well as character values ("left", "right", ...). For rectangles and text, there are additional 'hjust' and 'vjust' arguments which allow numeric vectors of justification in each direction (e.g., so that several pieces of text can have different justifications). (suggested by Ross Ihaka) - New 'edits' argument for grid.xaxis() and grid.yaxis() to allow specification of on-the-fly edits to axis children. - applyEdit(x, edit) returns x if target of edit (i.e., child specified by a gPath) cannot be found. - Fix for calculation of length of max/min/sum unit. Length is now (correctly) reported as 1 (was reported as length of first arg). - Viewport names can now be any string (they used to have to be a valid R symbol). - The 'label' argument for grid.xaxis() and grid.yaxis() can now also be a language object or string vector, in which case it specifies custom labels for the tick marks. INTERNATIONALIZATION o Unix-alike versions of R can now be used in UTF-8 and other multi-byte locales on suitably equipped OSes if configured with option --enable-mbcs (which is the default). [The changes to font handling in the X11 module are based on the Japanization patches of Eiji Nakama.] Windows versions of R can be used in `East Asian' locales on suitable versions of Windows. See the 'Internationalization' chapter in the 'Installation and Administration' manual. o New command-line flag --encoding to specify the encoding to be assumed for stdin (but not for a console). o New function iconv() to convert character vectors between encodings, on those OSes which support this. See the new capabilities("iconv"). o The meaning of 'encoding' for a connection has changed: it now allows any charset encoding supported by iconv on the platform, and can re-encode output as well as input. As the new specification is a character string and the old was numeric, this should not cause incorrect operation. o New function localeToCharset() to find/guess encoding(s) from the locale name. o nchar() returns the true number of bytes stored (including any embedded nuls), this being 2 for missing values. It has an optional argument 'type' with possible non-default values "chars" and "width" to give the number of characters or the display width in columns. o Characters can be entered in hexadecimal as e.g. \x9c, and in UTF-8 and other multibyte locales as \uxxxx, \u{xxxx}, \Uxxxxxxxx or \U{xxxxxxxx}. Non-printable Unicode characters are displayed C-style as \uxxxx or \Uxxxxxxxx. o LC_MONETARY is set to the locale, which affects the result of Sys.localeconv(), but nothing else in R itself. (It could affect add-on packages.) o source() now has an 'encoding' argument which can be used to make it try out various possible encodings. This is made use of by example() which will convert (non-UTF-8) Latin-1 example files in a UTF-8 locale. o read/writeChar() work in units of characters, not bytes. o .C() now accepts an ENCODING= argument where re-encoding is supported by the OS. See `Writing R Extensions'. o delimMatch (tools) now reports match positions and lengths in units of characters, not bytes. The delimiters can be strings, not just single ASCII characters. o .Rd files can indicate via a \encoding{} argument the encoding that should be assumed for non-ASCII characters they contain. o Phrases in .Rd files can be marked by \enc{}{} to show a transliteration to ASCII for use in e.g. text help. o The use of 'pch' in points() now allows for multi-byte character sets: in such a locale a glyph can either be specified as a multi-byte single character or as a number, the Unicode point. o New function l10n_info() reports on aspects of the locale/charset currently in use. o scan() is now aware of double-byte locales such as Shift-JIS in which ASCII characters can occur as the second ('trail') byte. o Functions sQuote() and dQuote() use the Unicode directional quotes if in a UTF-8 locale. o The infrastructure is now in place for C-level error and warning messages to be translated and used on systems with Native Language Support. This has been used for the startup message in English and to translate Americanisms such as 'color' into English: translations to several other languages are under way, and some are included in this release. See 'Writing R Extensions' for how to make use of this in a package: all the standard packages have been set up to do translation, and the 'language' 'en at quot' is implemented to allow Unicode directional quotes in a UTF-8 locale. o R-level stop(), warning() and message() messages can be translated, as can other messages via the new function gettext(). Tools xgettext() and xgettext2pot() are provided in package tools to help manage error messages. gettextf() is a new wrapper to call sprintf() using gettext() on the format string. o Function ngettext() allows the management of singular and plural forms of messages. UTILITIES o New functions mirror2html() and checkCRAN(). o R CMD check has a new option '--use-valgrind'. o R CMD check now checks that Fortran and C++ files have LF line endings, as well as C files. It also checks Makevars[.in] files for portable compilation flags. o R CMD check will now work on a source tarball and prints out information about the version of R and the package. o tools:::.install_package_code_files() (used to collate R files when installing packages) ensures files are separated by a line feed. o vignette() now returns an object of class "vignette" whose print() method opens the corresponding PDF file. The edit() method can be used to open the code of the vignette in an editor. o R CMD INSTALL on Unix has a new option '--build' matching that on Windows, to package as tarball the installed package. o R CMD INSTALL on Unix can now install binary bundles. o R CMD build now changes src files to LF line endings if necessary. o R CMD build now behaves consistently between source and binary builds: in each case it prepares a source directory and then either packages that directory as a tarball or calls R CMD INSTALL --build on the prepared sources. This means that R CMD build --binary now respects .Rbuildignore and will rebuild vignettes (unless the option --no-vignettes is used). For the latter, it now installs the current sources into a temporary library and uses that version of the package/bundle to rebuild the vignettes. o R CMD build now reports empty directories in the source tree. o New function write_PACKAGES() in package 'tools' to help with preparing local package repositories. (Based on a contribution by Uwe Ligges.) How to prepare such repositories is documented in the 'R Installation and Administration' manual. o package.skeleton() adds a bit more to DESCRIPTION. o Sweave changes: - \usepackage[nogin]{Sweave} in the header of an Sweave file supresses auto-setting of the graphical parameter like width of graphics. - The new \SweaveInput{} command works similar to LaTeX's \input{} command. - Option value strip.white=all strips all blank lines from the output of a code chunk. - Code chunks with eval=false are commented out by Stangle() and hence no longer tested by R CMD check. DOCUMENTATION o File doc/html/faq.html no longer exists, and doc/manual/R-FAQ.html (which has active links to other manuals) is used instead. (If makeinfo >= 4.7 is not available, the version on CRAN is linked to.) o Manual 'Writing R Extensions' has further details on writing new front-ends for R using the new public header files. o There are no longer any restrictions on characters in the \name{} field of a .Rd file: in particular _ is supported. C-LEVEL FACILITIES o There are new public C/C++ header files Rinterface.h and R_ext/RStartup.h for use with external GUIs. o Added an onExit() function to graphics devices, to be executed upon user break if non-NULL. o ISNAN now works even in C++ code that undefines the 'isnan' macro. o R_alloc's limit on 64-bit systems has been raised from just under 2^31 bytes (2Gb) to just under 2^34 (16Gb), and is now checked. o New math utility functions log1pmx(x), lgamma1p(x), logspace_add(logx, logy), and logspace_sub(logx, logy). DEPRECATED & DEFUNCT o The aqua module for MacOS X has been removed: --with-aqua now refers to the unbundled Cocoa GUI. o Capabilities "bzip2", "GNOME, "libz" and "PCRE" are defunct. o The undocumented use of UseMethod() with no argument was deprecated in 2.0.1 and is now regarded as an error. o Capability "IEEE754" is deprecated. o The 'CRAN' argument to update.packages(), old.packages(), new.packages(), download.packages() and install.packages() is deprecated in favour of 'repos', which replaces it as a positional argument (so this is only relevant for calls with named args). o The S3 methods for getting and setting names of "dist" objects have been removed (as they provided names with a different length from the "dist" object itself). o Option "repositories" is no longer used and so not set. o loadURL() is deprecated in favour of load(url()). o delay() is deprecated. Use delayAssign() instead. INSTALLATION CHANGES o New configure option --enable-utf8 to enable support for UTF-8 locales, on by default. o R_XTRA_[CF]FLAGS are now used during the configuration tests, and [CF]PICFLAGS if --enable-R-shlib was specified. This ensures that features such as inlining are only used if the compilation flags specified support them. (PR#7257) o Files FAQ, RESOURCES, doc/html/resources.html are no longer in the SVN sources but are made by 'make dist'. o The GNOME GUI is unbundled, now provided as a package on CRAN. o Configuring without having the recommended packages is now an error unless --with-recommended-packages=no (or equivalent) is used. o Configuring without having the X11 headers and libraries is now an error unless --with-x=no (or equivalent) is used. o Configure tries harder to find a minimal set of FLIBS. Under some circumstances this may remove from R_LD_LIBRARY_PATH path elements that ought to have specified in LDFLAGS (but were not). o The C code for most of the graphics device drivers and their afm files are now in package grDevices. o R is now linked against ncurses/termlib/termcap only if readline is specified (now the default) and that requires it. o Makeinfo 4.7 or later is now required for building the HTML and Info versions of the manuals. PACKAGE INSTALLATION CHANGES o There are new types of packages, identified by the Type field in the DESCRIPTION file. For example the GNOME console is now a separate package (on CRAN), and translations can be distributed as packages. o There is now support of installing from within R both source and binary packages on MacOS X and Windows. Most of the R functions now have a 'type' argument defaulting to getOption("pkgType") and with possible values "source", "win.binary" and "mac.binary". The default is "source" except under Windows and the CRAN GUI build for MacOS X. o install.packages() and friends now accept a vector of URLs for 'repos' or 'contriburl' and get the newest available version of a package from the first repository on the list in which it is found. The argument 'CRAN' is still accepted, but deprecated. install.packages() on Unix can now install from local .tar.gz files via repos = NULL (as has long been done on Windows). install.packages() no longer asks if downloaded packages should be deleted: they will be deleted at the end of the session anyway (and can be deleted by the user at any time). If the repository provides the information, install.packages() will now accept the name of a package in a bundle. If 'pkgs' is omitted install.packages() will use a listbox to display the available packages, on suitable systems. 'dependencies' can be a character vector to allow only some levels of dependencies (e.g. not "Suggests") to be requested. o There is a new possible value update.packages(ask="graphics") that uses a widget to (de)select packages, on suitable systems. o The option used is now getOption("repos") not getOption("CRAN") and it is initially set to a dummy value. Its value can be a character vector (preferably named) giving one or several repositories. A new function chooseCRANmirror() will select a CRAN mirror. This is called automatically if the contrib.url() encounters the initial dummy value of getOption("repos") A new function setRepositories() can be used to create getOption("repos") from a (platform-specific) list of known repositories. o New function new.packages() to report uninstalled packages available at the requested repositories. This also reports incomplete bundles. It will optionally install new packages. o New function available.packages(), similar to CRAN.packages() but for use with multiple repositories. Both now only report packages whose R version requirements are met. o update.packages() and old.packages() have a new option 'checkBuilt' to allow packages installed under earlier versions of R to be updated. o remove.packages() can now remove bundles. o The Contains: field of the DESCRIPTION file of package bundles is now installed, so later checks can find out if the bundle is complete. o packageStatus() is now built on top of *.packages, and gains a 'method' argument. It defaults to the same repositories as the other tools, those specified by getOption("repos"). BUG FIXES o Configuring for Tcl/Tk makes use of ${TK_LIB_SPEC} ${TK_LIBS} not ${TK_LIB_SPEC} ${TK_XLIBSW}, which is correct for recent versions of Tk, but conceivably not for old tkConfig.sh files. o detach() was not recomputing the S4 methods for primitives correctly. o Methods package now has class "expression" partly fixed in basic classes, so S4 classes can extend these (but "expression" is pretty broken as a vector class in R). o Collected warnings had messages with unneeded trailing space. o S4 methods for primitive functions must be exported from namespaces; this is now done automatically. Note that is.primitive() is now in "base", not "methods". o Package grid: - Fixed bug in grid.text() when "rot" argument has length 0. (reported by Emmanuel Paradis) o .install_package_vignette_index() created an index even in an empty 'doc' directory. o The print() method for factors now escapes characters in the levels in the same way as they are printed. o str() removed any class from environment objects. str() no longer interprets control characters in character strings and factor levels; also no longer truncates factor levels unless they are longer than 'nchar.max'. Truncation of such long strings is now indicated ''outside'' the string. str() was misleading for the case of a single slot. str() now also properly displays S4 class definitions (such as returned by getClass(). o print.factor(quote=TRUE) was not quoting levels, causing ambiguity when the levels contained spaces or quotes. o R CMD check was confused by a trailing / on a package name. o write.table() was writing incorrect column names if the data frame contained any matrix-like columns. o write.table() was not quoting row names for a 0-column x. o t(x)'s default method now also preserves names(dimnames(x)) for 1D arrays 'x'. o r <- a %*% b no longer produces names(dimnames(r)) == c("", "") unless one of a or b has named dimnames. o Some .Internal functions that were supposed to return invisibly did not. This was behind PR#7397 and PR#7466. o eval(expr, NULL, encl) now looks up variables in encl, as eval(expr, list(), encl) always did o Coercing as.data.frame(NULL) to a pairlist caused an error. o p.adjust(p, ..) now correctly works when `p' contains NAs (or when it is of length 0 or length 2 for method = "hommel"). o 'methods' initialization was calling a function intended for .Call() with .C(). o optim() needed a check that the objective function returns a value of length 1 (spotted by Ben Bolker). o X11() was only scaling its fonts to pointsize if the dpi was within 0.5 of 100dpi. o X11() font selection was looking for any symbol font, and sometimes got e.g. bold italic if the server has such a font. o dpois(*, lambda=Inf) now returns 0 (or -Inf for log). o Using pch="" gave a square (pch=0)! Now it is regarded as the same as NA, which was also undocumented but omits the point. o Base graphics now notices (ab)lines which have a zero coordinate on log scale, and omits them. (PR#7559) o stop() and warning() now accept NULL as they are documented to do (although this seems of little use and is equivalent to ""). o weighted.mean() now checks the length of the weight vector w. o getAnywhere() was confused by names with leading or trailing dots (spotted by Robert McGehee) o eval() was not handling values from return() correctly. o par(omd) is now of the form c(x1, x2, y1, y2) to match the documentation and for S-PLUS compatibility. [Previously, par(omd) was of the form c(bottom, left, top, right) like par(oma) and par(omi)] o formatC() did not check its 'flag' argument, and could segfault if it was incorrect. (PR#7686) o Contrasts needed to be coerced to numeric (e.g. from integer) inside model.matrix. (PR#7695) o socketSelect() did not check for buffered input. o Reads on a non-blocking socket with no available data were not handled properly and could result in a segfault. o The "aovlist" method for se.contrast() failed in some very simple cases that were effectively not multistratum designs, e.g. only one treatment occurring in only one stratum. o pgamma() uses completely re-written algorithms, and should work for all (even very extreme) arguments; this is based on Morten Welinder's contribution related to PR#7307. o dpois(10, 2e-308, log=TRUE) and similar cases gave -Inf. o x <- 2^(0:1000); plot(x, x^.9, type="l", log="xy")# and x <- 2^-(1070:170); plot(x, x^.9, type="l", log="xy")# now both work o summary.lm() asked for a report on a reasonable occurrence, but the check failed to take account of NAs. o lm() was miscalculating 'df.residual' for empty models with a matrix response. o summary.lm() now behaves more sensibly for empty models. o plot.window() was using the wrong sign when adjusting xlim/ylim for positive 'asp' and a reversed axis. o If malloc() fails when allocating a large object the allocator now does a gc and tries the malloc() again. o packageSlot() and getGroupMembers() are now exported from the 'methods' package as they should from documentation and the Green Book. o rhyper() was giving numbers slightly too small, due to a bug in the original algorithm. (PR#7314) o gsub() was sometimes incorrectly matching ^ inside a string, e.g. gsub("^12", "x", "1212") was "xx". o [g]sub(perl = TRUE) was giving random results for a 0-length initial match. (PR#7742) o [g]sub was ignoring most 0-length matches, including all initial ones. Note that substitutions such as gsub("[[:space:]]*", " ", ...) now work as they do in 'sed' (whereas the effect was previously the same as gsub("[[:space:]]+", " ", ...)). (In part PR#7742) o Promises are now evaluated when extracted from an environment using '$' or '[[ ]]'. o reshape(direction="wide") had some sorting problems when guessing time points (PR#7669) o par() set 'xaxp' before 'xlog' and 'yaxp' before 'ylog', causing PR#831. o The logic in tclRequire() to check the availability of a Tcl package turned out to be fallible. It now uses a try()-and-see mechanism instead. o Opening a unz() connection on a non-existent file left a file handle in use. o "dist" objects of length 0 failed to print. o INSTALL and the libR try harder to find a temporary directory (since there might be one left over with the same PID). o acf() could cause a segfault with some datasets. (PR#7771) o tan(1+LARGEi) now gives 0+1i rather than 0+NaNi (PR#7781) o summary(data.frame(mat = I(matrix(1:8, 4)))) does not go into infinite recursion anymore. o writeBin() performed byte-swapping incorrectly on complex vectors, also swapping real and imaginary parts. (PR#7778) o read.table() sometimes discarded as blank lines containing only white space, even if sep=",". -- 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 Tue Apr 19 01:17:12 2005 From: p.dalgaard at biostat.ku.dk (Peter Dalgaard) Date: 19 Apr 2005 01:17:12 +0200 Subject: Re-release of R 2.1.0 Message-ID: Due to a mishap in the build procedure, the originally released sources erroneously had "2.2.0" in several places within the "configure" file. A re-released version has been put up in http://biostat.ku.dk/~pd/R-release/ and should find its way to CRAN and its mirrors some time tomorrow. The new files have md5 sums as follows: 94d55d512a9ba36caa9b7df079bae19f COPYING d8045f3b8f929c1cb29a1e3fd737b499 COPYING.LIB 70447ae7f2c35233d3065b004aa4f331 INSTALL 8b78e12b100a6834fdada2dfaab98ab0 NEWS 88bbd6781faedc788a1cbd434194480c ONEWS 4f004de59e24a52d0f500063b4603bcb OONEWS fb47b1fdef4323031e24d541a2f36b2b R-2.0.1.tar.gz 270f7a7382e8cb10a353148598f91096 R-2.1.0.tar.gz d8a2d5461c16aa37b1418c0500423bec R-2.1.0.tar.gz-split.aa 9a8e7b5988fc4e43b56561cbb6853534 R-2.1.0.tar.gz-split.ab dfb0600d8726613ac5a424bbd054c243 R-2.1.0.tar.gz-split.ac 150903071850a951722713560834029a R-2.1.0.tar.gz-split.ad cb416f351d0c9c75a86c27998d691372 R-2.1.0.tar.gz-split.ae d8e01f2b68d2f689444901ae1957c396 R-2.1.0.tar.gz-split.af 3949c2649d595683fe26212dc292f4b1 R-2.1.0.tar.gz-split.ag 4e984f0b2dacf5d52657b04e874756d9 R-2.1.0.tar.gz-split.ah c0f6e6135e54bd5d8917c804ec4b9b15 R-2.1.0.tar.gz-split.ai 270f7a7382e8cb10a353148598f91096 R-latest.tar.gz 56a780cdec835c5c598f8dfc0738f7f3 README AFAIK, the Windows build doesn't use "configure", so should be OK. Source builds get (at least) Makeconf wrong, causing the following symptom: > library(MASS) Warning message: package 'MASS' was built under R version 2.2.0 In that case, you'll need to rebuild with the corrected "configure". You can get the file separately from https://svn.r-project.org/R/tags/R-2-1-0/configure Apologies for the inconvenience. -pd -- 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 bates at stat.wisc.edu Fri May 6 22:41:11 2005 From: bates at stat.wisc.edu (Douglas Bates) Date: Fri, 06 May 2005 15:41:11 -0500 Subject: R News, 2005, issue 1 Message-ID: <427BD667.7000906@stat.wisc.edu> RNews_2005-1.pdf has been uploaded to CRAN. It should be on the main CRAN site Saturday and on the mirrors by Sunday or Monday. This issue is being distributed as PDF only. Please email rnews-editors at r-project.org if not having a gzipped PostScript version will be a problem for you. My thanks to all the contributors to R News and especially to the editorial team. We hope you will enjoy this issue. From p.dalgaard at biostat.ku.dk Mon Jun 20 12:18:39 2005 From: p.dalgaard at biostat.ku.dk (Peter Dalgaard) Date: 20 Jun 2005 12:18:39 +0200 Subject: R 2.1.1 is released Message-ID: I've rolled up R-2.1.1.tar.gz a short while ago. This is a maintenance release containing mainly bugfixes. See the full list of changes below. You can get it from http://cran.r-project.org/src/base/R-2/R-2.1.1.tar.gz (give it some time to arrive there) or wait for it to be mirrored at a CRAN site nearer to you. If you're *really* impatient, www.biostat.ku.dk/~pd/R-release should work too. 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: 94d55d512a9ba36caa9b7df079bae19f COPYING d8045f3b8f929c1cb29a1e3fd737b499 COPYING.LIB 70447ae7f2c35233d3065b004aa4f331 INSTALL 1504edf0958138c034375749c3a189ee NEWS 88bbd6781faedc788a1cbd434194480c ONEWS 4f004de59e24a52d0f500063b4603bcb OONEWS e755b0ba5851ec261000af6b5c510335 R-2.1.1.tar.gz 97ff97d7094ef8d4cb0615bc9c3c4fe0 R-2.1.1.tar.gz-split.aa 40bbb45da53c04fefcaa8370ca84df81 R-2.1.1.tar.gz-split.ab 1fe3281097b6bce8c5d1eef2d1105f6a R-2.1.1.tar.gz-split.ac eaaa59c6f78b47ca45439f59f4bc99a2 R-2.1.1.tar.gz-split.ad 7b3f0fba58926784052632133b926311 R-2.1.1.tar.gz-split.ae 7bf0703625535bec3da0a5e66e6c1d28 R-2.1.1.tar.gz-split.af d1da10e9d40f1266a5aa8d71e5def67e R-2.1.1.tar.gz-split.ag e90ea3c12153908184a4cb5307ffde09 R-2.1.1.tar.gz-split.ah 03f19a0d058aba30c686400fc3f85d76 R-2.1.1.tar.gz-split.ai e755b0ba5851ec261000af6b5c510335 R-latest.tar.gz 56a780cdec835c5c598f8dfc0738f7f3 README Here is the relevant bit of the NEWS file: CHANGES IN R VERSION 2.1.1 NEW FEATURES o bug.report() now reports the locale in use. o upgrade.packageStatus() allows user input "c" to cancel the upgrade, just as update.packages() does. o glm() now accepts 1D arrays (e.g. tables) as a response, dropping them to a vector whilst preserving names. o df() with one infinite df now works (to match pf()). o Added tclServiceMode() function to the tcltk package to allow updating to be suspended. o The Encoding: field of a DESCRIPTION file is now documented, and used by packageDescription() and library(help=). o There has been progress on translations: existing translations have been revised and expanded, and French and Korean have been added. The Windows installer supports a wide range of languages for installation. BUG FIXES o lm(qr=FALSE) now works. o predict.glm() not longer loses names for "response" predictions. (PR#7792) o Typo in menu(graphics=TRUE) meant it failed on Unix if tcltk was not available. o When names.dist() was removed, the result of cmdscale() lost its rownames. The example also lost the labels. o R CMD check assumed 'tar' was GNU tar and so supported -z. o read.table() was not handing escaped quotes inside quoted fields in the first five lines of the file. (PR#7789) It was also not handling correctly EOF in the first five lines when reading from stdin(). (PR#7772) o 'make uninstall' was incomplete. o make.packages.html() called by help.start() was failing if there were installed packages with help titles invalid in the current locale. o printCoefmat(signif.legend = FALSE) was non-functional. (PR#7802) o Some as.date.frame() methods failed because the expression deparsed into multiple lines. (PR#7808) o setRepositories() had a typo. (PR#7810) o Printing arrays/data frames with multibyte characters in the column labels was sometimes misaligned or using excessive space. (PR#7803) o The Tcl/Tk console did not support multibyte characters. o as.POSIXlt() could give infinite recursion if passed a corrupt "POSIXct" object (generated by an incorrect call to c.POSIXct, PR#7826). o update.packages() was not passing 'type' correctly to install.packages(). o Printing the result of an unbalanced model.tables() call sometimes got confused if terms() had rearranged interaction terms. (PR#7829) o .Platform$pkgType was wrong on the CRAN MacOS X build, and .install.macbinary() was missing. o as.personList() as used by citation() got confused by names containing "and". (PR#7797) o Subscripting an array by a matrix containing zero or negative values or the wrong number of columns was not handled consistently. (PR#7824) o select.list(multiple=TRUE) now detects and tries again for invalid text input. o add1.[g]lm could give strange results with interaction terms when the model and the upper scope had different orders for the main effects. (PR#7842) o A bug had sneaked into the anova.mlmlist() code, affecting the Greenhouse-Geisser epsilon. Code wrongly assumed a matrix to be symmetric. (Thanks to Bela Bauer.) o anova.mlmlist() and mauchley.test() are now more tolerant to rank deficiency in the M and X matrices (also when they are implicitly generated via model.matrix()). o anova.mlm had a scoping issue (PR#7898) o pf() with infinite df is allowed again. It is now more accurate for extreme ratios of dfs, especially when there is a non-centrality parameter. o df() was inaccurate for large df (1e16 or greater). o dt() was inaccurate for large df (1e9 or greater) with a non-centrality parameter. o runmed(*, algorithm="Turlach") seg.faulted in rare cases. o strwrap() now makes a reasonable job of text that is invalid in the current locale. o Reading with encoding "UCS-2LE" will remove any Byte Order Mark, as most implementations of iconv fail to handle BOMs (which are present in 'Windows Unicode' files). o unique() for a list was incorrectly reporting `unimplemented'. o The parser's contextstack was not protected against overflow, e.g. more than 50 unmatched '('. (PR#7859) o source(file, chdir = TRUE) was not checking that 'file' was a filepath (rather than a URL). For 2.1.0 only, it did not work even if 'file' was a filepath. o Hershey fonts were being sized based on pixels not points so came out too small on devices where pixels were noticeably different from points (e.g., win.printer() and high-resolution screens). Fix means that default size of Hershey fonts may be slightly different, for example, smaller by default on PostScript and PDF. o The branch cuts in the complex versions of the inverse trigonometric and hyperbolic functions were non-standard. (PR#7871) o truncate() on file() connections was limited to files < 2Gb. It now works for larger files at least on 64-bit OSes and others where ftruncate supports such files. (Related to PR#7879) o proj.aovlist() did not work correctly on objects fitted from a data frame with row names. o The coding standards recommendations had nuke-trailing-whitespace where newer versions of ESS need ess-nuke-trailing-whitespace. (PR#7888) o package.skeleton() missed the first newline in the DESCRIPTION file. o pbirthday() reported p = 1 too often when coincident > 2. o plot(1:3, exp(1:3), log = "y", ylim = c(30,1)) {reversed log-scale axis} now works, based on Uwe Ligges' suggestions. (PR#7894) o install.packages() was aborting when a package in a bundle was chosen from a menu. It failed if more than one package in a bundle was chosen from the command line. o qcauchy() suffered from underflow in the extreme tails. (PR#7902) o Printing of raw matrices/arrays was not implemented. (PR#7912) o getCallingDLL()'s default first argument did not correspond to its description and has been changed. The mismatch caused symbols in .C/.Call/.Fortran calls without a PACKAGE= argument to be potentially looked up in the wrong namespace. o Binary save() of raw vectors was not working correctly on big-endian platforms. (PR#7812) o as.Date.factor() now accepts a format argument. o Workaround added for FreeBSD which does not have alloca.h _and_ does not allow alloca() to be declared. o identify() now respects 'cex'. (PR#660) Warnings from identify() are now printed immediately even on consoles with delayed printing. -- O__ ---- Peter Dalgaard ?ster Farimagsgade 5, Entr.B c/ /'_ --- Dept. of Biostatistics PO Box 2099, 1014 Cph. K (*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918 ~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk) FAX: (+45) 35327907 From Torsten.Hothorn at rzmail.uni-erlangen.de Fri Jul 22 11:59:37 2005 From: Torsten.Hothorn at rzmail.uni-erlangen.de (Torsten Hothorn) Date: Fri, 22 Jul 2005 11:59:37 +0200 (CEST) Subject: useR! 2006 Message-ID: We are happy to announce that the second R user conference useR! 2006 is scheduled for June 15-17 2006 and will take place at the Vienna University of Economics and Business Administration. This second world-meeting of the R user community will focus on - R as the `lingua franca' of data analysis and statistical computing, - providing a platform for R users to discuss and exchange ideas how R can be used to do statistical computations, data analysis, visualization and exciting applications in various fields, - giving an overview of the new features of the rapidly evolving R project. As for the predecessor conference, the program will consist of two parts: keynote lectures and user-contributed sessions (abstract submission will be available online starting from October 2005). Prior to the conference, there will be tutorials on R (proposals for tutorials should be sent before 2005-09-30). KEYNOTE LECTURES R becomes the standard computing engine in more and more disciplines, both in academia and the business world. How R is used in different areas will be presented in keynote lectures addressing hot topics including - Marketing - Teaching - R on Different Platforms - Graphics - History of S and R Speakers will include John M. Chambers, John Fox, Stefan Iacus, Uwe Ligges, Paul Murrell, Peter Rossi, Simon Urbanek and Sanford Weisberg. USER-CONTRIBUTED SESSIONS The sessions will be a platform to bring together R users, contributers, package maintainers and developers in the S spirit that `users are developers'. People from different fields will show us how they solve problems with R in fascinating applications. The sessions are organized by members of the program committee, including Claudio Agostinelli, Roger Bivand, Peter Buehlmann, Ram?n D?az-Uriarte, Sandrine Dudoit, Dirk Eddelbuettel, Frank Harrell, Simon Jackman, Roger Koenker, Uwe Ligges, Andrew Martin, Balasubramanian Narasimhan, Peter Rossi, Anthony Rossini, Gerhard Tutz and Antony Unwin and will cover topics such as - Applied Statistics & Biostatistics - Bayesian Statistics - Bioinformatics - Econometrics & Finance - Machine Learning - Marketing - Robust Statistics - Spatial Statistics - Statistics in the Social and Political Sciences - Teaching - Visualization & Graphics - and many more. PRE-CONFERENCE TUTORIALS Before the start of the official program, half-day tutorials will be offered on Wednesday, June 14th, including a lecture on R graphics by Paul Murrell. We invite R users to submit proposals for three hour tutorials on special topics on R. The proposals should give a brief description of the tutorial, including goals, detailed outline, justification why the tutorial is important, background knowledge required and potential attendees. The proposals should be sent before 2005-09-30 to useR-2006 at R-project.org. After the official presentations, Vienna's famous wine and beer pubs, cafes and restaurants proofed to be a very stimulating environment for fruitful discussions at previous meetings of the R community like last year's `useR! 2004'. We invite all R users to submit abstracts on topics presenting innovations or exciting applications of R. A web page offering more information on the `useR!' conference, abstract submission, registration and Vienna is available at http://www.R-project.org/useR-2006/ IMPORTANT DATES - registration: starting October 2005 - online abstract submission: starting October 2005 - submission deadline of tutorial proposals: 2005-09-30 - early registration deadline: 2006-01-31 - submission deadline of abstracts: 2006-02-28 - registration deadline: 2006-05-31 We hope to meet you in Vienna! The organizing committee: Torsten Hothorn, Achim Zeileis, David Meyer, Bettina Gruen, Kurt Hornik and Friedrich Leisch From p.dalgaard at biostat.ku.dk Thu Oct 6 13:45:43 2005 From: p.dalgaard at biostat.ku.dk (Peter Dalgaard) Date: 06 Oct 2005 13:45:43 +0200 Subject: R-2.2.0 is released Message-ID: I've rolled up R-2.2.0.tar.gz a short while ago. This version contains several changes and additions, mostly incremental. See the full list of changes below. You can get it from http://cran.r-project.org/src/base/R-2/R-2.2.0.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. 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: 94d55d512a9ba36caa9b7df079bae19f COPYING d8045f3b8f929c1cb29a1e3fd737b499 COPYING.LIB 043a28ec5378bfaba88e4fb34f805980 FAQ 70447ae7f2c35233d3065b004aa4f331 INSTALL 5209c94d85a195fb92cdf796912a732b NEWS 88bbd6781faedc788a1cbd434194480c ONEWS 4f004de59e24a52d0f500063b4603bcb OONEWS 6bddf439ae417a48bd31892996ea111c R-2.2.0.tar.gz f8763b77147796b3adf52045183ee0c3 R-2.2.0.tar.gz-split.aa ba00cb5ff9c3e82038c3b3abcce60855 R-2.2.0.tar.gz-split.ab 9668413beca51736390b63afa489b2f1 R-2.2.0.tar.gz-split.ac b19e3a225a66b50e14671f1bb36e1d07 R-2.2.0.tar.gz-split.ad 2465e208aab735e20d1efee7c72f6c23 R-2.2.0.tar.gz-split.ae 903f37e74de637e71ef619c5801f719e R-2.2.0.tar.gz-split.af 46502602ec014ba2f261ed6c81811ea6 R-2.2.0.tar.gz-split.ag 58d5e7d99ec15388687f2a7dca78b647 R-2.2.0.tar.gz-split.ah d8c2356d0e3e650b5bfc92e5ee22a91d R-2.2.0.tar.gz-split.ai cabdf55568d9f90115faaaf18cddfa07 R-2.2.0.tar.gz-split.aj 56a780cdec835c5c598f8dfc0738f7f3 README 020479f381d5f9038dcb18708997f5da RESOURCES Here is the relevant bit of the NEWS file: CHANGES IN R VERSION 2.2.0 USER-VISIBLE CHANGES o plot() uses a new default 'which = 5' for the fourth panel when 'which' is not specified. o The SVN revision number will appear after the date in the welcome message. The date shown is now the date of the last change to the sources rather than the date the sources were prepared. o is.null(expression()) now returns FALSE. Only NULL gives TRUE in is.null(). o graphics::xy.coords, xyz.coords and n2mfrow have been moved to the grDevices name space (to be available for grid as well). graphics::boxplot.stats, contourLines, nclass.*, and chull have been moved to the grDevices name space. The C code underlying chull() has been moved to package grDevices. o split(x, f), split<-() and unsplit() now by default split by all levels of a factor f, even when some are empty. Use split(x, f, drop = TRUE) if you want the old behavior of dropping empty levels. split() and split<-() are S3 generic functions with new arguments 'drop' and '...' and all methods now should have 'drop' and '...' arguments as well. o The default for 'allowEscapes' in both read.table() and scan() has been changed to FALSE. o The default for 'gcFirst' in system.time() is now TRUE. NEW FEATURES o .Platform has a new component 'path.sep', the separator used between paths in environment variables such as PATH and TEXINPUTS. o anova.mlm() now handles the single-model case. o Hexadecimal values are now allowed for as.numeric() and as.integer() on all platforms, and as integer constants in R code. o attach() now prints an information message when objects are masked on the search path by or from a newly attached database. o axis() now returns 'at' positions. o axis() has a new argument 'hadj' to control horizontal adjustment of labels. o axis.Date() and axis.POSIXct() now accept a 'labels' argument (contributed by Gavin Simpson). o barplot() now has arguments 'log = ""' and 'add = FALSE' (as in barplot2() from package 'gplots'). o baseenv() has been added, to return the base environment. This is currently still NULL, but will change in a future release. o boxplot() now responds to supplying 'yaxs' (via bxp()). (Wish of PR#8072.) o capabilities() has a new component 'NLS'. o cbind() and rbind() now react to 'deparse.level' = {0,1,2} (as in another system not unlike R). o Experimental versions of cbind() and rbind() in methods package, based on new generic function cbind2(x,y) and rbind2(). This will allow the equivalent of S4 methods for cbind() and rbind() --- currently only after an explicit activation call, see ?cbind2. o New functions cdplot() and spineplot() for conditional density plots and spine plots or spinograms. Spine plots are now used instead of bar plots for x-y scatterplots where y is a factor. o checkDocFiles() in package 'tools' now checks for bad \usage lines (syntactically invalid R code). o The nonparametric variants of cor.test() now behave better in the presence of ties. The "spearman" method uses the asymptotic approximation in that case, and the "kendall" method likewise, but adds a correction for ties (this is not necessary in the Spearman case). o The X11 dataentry() now has support for X Input Methods (contributed by Ei-ji Nakama). o density() is now an S3 generic where density.default() {former density()} has new argument 'weights' for specifying observation masses different than the default 1/N -- based on a suggestion and code from Adrian Baddeley. o download.packages() now carries on if it encounters a download error (e.g. a repository with a corrupt index). o dump() now skips missing objects with a warning rather than throw an error. o Added "POSIXlt" methods for duplicated() and unique(). o Function encoded_text_to_latex() in package tools translates Latin 1,2,9 and UTF-8 encoded character vectors to LaTeX escape sequences where appropriate. o encodeString() allows justify = "none" for consistency with format.default(). Some argument names have been lengthened for clarity. o file(), fifo() and pipe() now (if possible) report a reason if they fail to open a connection. o format.default() now has a 'width' argument, and 'justify' can now centre character strings. format.default() has new arguments 'na.encode' to control whether NA character strings are encoded (true by default), and 'scientific' to control the use of fixed/scientific notation for real/complex numbers. How format() works on a list is now documented, and uses arguments consistently with their usage on an atomic vector. o format.info() now has a 'digits' argument, and is documented to work for all atomic vectors (it used to work for all but raw vectors.). o New function glob2rx() for translating `wildcard' aka `globbing' to regular expressions. o There is a new function gregexpr() which generalizes regexpr() to search for all matches in each of the input strings (not just the first match). o [g]sub() now have a 'useBytes' argument like grep() and regexpr(). o [g]sub(perl = TRUE) support \L and \U in the replacement. o iconv() has been moved from 'utils' to 'base'. o identify()'s default method has additional arguments 'atpen' and 'tolerance' (following S). o KalmanForecast() and KalmanLike() now have an optional argument fast=FALSE to prevent their arguments being modified. o Exact p-values are available in ks.test() for the one-sided and two-sided one-sample Kolmogorov-Smirnov tests. o labels() now has a method for "dist" objects (replacing that for names() which was withdrawn in 2.1.0). o library() now explicitly checks for the existence of directories in 'lib.loc': this avoids some warning messages. o loadNamespace(keep.source=) now applies only to that namespace and not others it might load to satisfy imports: this is now consistent with library(). o match.arg() has a new argument 'several.ok = FALSE'. o max.col() has a new argument for non-random behavior in the case of ties. o memory.profile() now uses the type names returned by typeof() and no longer has two unlabelled entries. o methods() now warns if it appears to have been called on a non-generic function. o The default mosaicplot() method by default draws grey boxes. o nlminb(), similar to that in S-PLUS, added to package 'stats'. o New algorithm "port" (the nl2sol algorithm available in the Port library on netlib) added to the nls() function in the 'stats' package. o object.size() now supports more types, including external pointers and weak references. o options() now returns its result in alphabetical order, and is documented more comprehensively and accurately. (Now all options used in base R are documented, including platform-specific ones.) Some options are now set in the package which makes use of them (grDevices, stats or utils) if not already set when the package is loaded. o New option("OutDec") to set the decimal point for output conversions. o New option("add.smooth") to add smoothers to a plot, currently only used by plot.lm(). o pie() has new optional arguments 'clockwise' and 'init.angle'. o plot.lm() has two new plots (for 'which' = 5 or 6), plotting residuals or cook distances versus (transformed) leverages - unless these are constant. Further, the new argument 'add.smooth' adds a loess smoother to the point plots by default, and 'qqline = TRUE' adds a qqline() to the normal plot. The default for 'sub.caption' has been improved for long calls. o R.home() has been expanded to return the paths to components (which can as from this version be installed elsewhere). o readbin() and writeBin() now support raw vectors as well as filenames and connections. o read.dcf() can now read gzipped files. o read.table() now passes 'allowEscapes' to scan(). o sample(x, size, prob, replace = TRUE) now uses a faster algorithm if there are many reasonably probable values. (This does mean the results will be different from earlier versions of R.) The speedup is modest unless 'x' is very large _and_ 'prob' is very diffuse so that thousands of distinct values will be generated with an appreciable frequency. o scatter.smooth() now works a bit more like other plotting functions (e.g., accepts a data frame for argument 'x'). Improvements suggested by Kevin Wright. o signif() on complex numbers now rounds jointly to give the requested number of digits in the larger component, not independently for each component. o New generic function simulate() in the 'stats' package with methods for some classes of fitted models. o smooth.spline() has a new argument 'keep.data' which allows to provide residuals() and fitted() methods for smoothing splines. o Attempting source(file, chdir=TRUE) with a URL or connection for 'file' now gives a warning and ignores 'chdir'. o source() closes its input file after parsing it rather than after executing the commands, as used to happen prior to 2.1.0. (This is probably only significant on Windows where the file is locked for a much shorter time.) o split(), split<-(), unsplit() now have a new argument 'drop = FALSE', by default not dropping empty levels; this is *not* back compatible. o sprintf() now supports asterisk `*' width or precision specification (but not both) as well as `*1$' to `*99$'. Also the handling of `%' as conversion specification terminator is now left to the system and doesn't affect following specifications. o The plot method for stl() now allows the colour of the range bars to be set (default unchanged at "light gray"). o Added tclServiceMode() function to the tcltk package to allow updating to be suspended. o terms.formula() no longer allows '.' in a formula unless there is a (non-empty) 'data' argument or 'allowDotAsName = TRUE' is supplied. We have found several cases where 'data' had not been passed down to terms() and so '.' was interpreted as a single variable leading to incorrect results. o New functions trans3d(), the 3D -> 2D utility from persp()'s example, and extendrange(), both in package 'grDevices'. o TukeyHSD() now returns p-values adjusted for multiple comparisons (based on a patch contributed by Fernando Henrique Ferraz P. da Rosa). o New functions URLencode() and URLdecode(), particularly for use with file:// URLs. These are used by e.g. browse.env(), download.file(), download.packages() and various help() print methods. o Functions utf8ToInt() and intToUtf8() to work with UTF-8 encoded character strings (irrespective of locale or OS-level UTF-8 support). o [dqp]wilcox and wilcox.test work better with one very large sample size and an extreme first argument. o write() has a new argument 'sep'. o write.csv[2] now also support row.names = FALSE. o The specification of the substitutions done when processing Renviron files is more liberal: see ?Startup. It now accepts forms like R_LIBS=${HOME}/Rlibrary:${WORKGRP}/R/lib . o Added recommendation that packages have an overview man page -package.Rd, and the promptPackage() function to create a skeleton version. o Replacement indexing of a data frame by a logical matrix index containing NAs is allowed in a few more cases, in particular always when the replacement value has length one. o Conversion of .Rd files to latex now handles encoding more comprehensively, including some support for UTF-8. o The internal regex code has been upgraded to glibc-2.3.5. Apart from a number of bug fixes, this should be somewhat faster, especially in UTF-8 locales. o PCRE has been updated to version 6.2. o zlib has been updated to version 1.2.3. o bzip2 has been updated to version 1.0.3. o Complex arithmetic is now done by C99 complex types where supported. This is likely to boost performance, but is subject to the accuracy with which it has been implemented. o The printing of complex numbers has changed, handling numbers as a whole rather than in two parts. So both real and imaginary parts are shown to the same accuracy, with the 'digits' parameter referring to the accuracy of the larger component, and both components are shown in fixed or scientific notation (unless one is entirely zero when it is always shown in fixed notation). o Error messages from .C() and .Fortran(), and from parsing errors, are now more informative. o The date and date-time functions work better with dates more than 5000 years away from 1970-01-01 (by making dubious assumptions about the calendar in use). o There is now a traditional Chinese translation, and a much more extensive Russian translation. DEPRECATED & DEFUNCT o Capability "IEEE754" is defunct. o loadURL() is defunct: use load(url()). o delay() is defunct: use delayedAssign() instead. o The 'CRAN' argument to update.packages(), old.packages(), new.packages(), download.packages() and install.packages() is defunct in favour of 'repos'. o write.table0() is deprecated in favour of the much faster write.table(). o format.char() is deprecated in favour of format.default(). o R_HOME/etc/Rprofile is no longer looked for if R_HOME/etc/Rprofile.site does not exist. (This has been undocumented since R 1.4.0.) o CRAN.packages() is deprecated in favour of available.packages(). o Rd.sty no longer processes pre-2.0.0 conversions containing \Link. o The stubs for the defunct device GNOME/gnome have been removed. o print.matrix() (which has been identical to print.default since R 1.7.0) has been removed. INSTALLATION o LDFLAGS now defaults to -L/usr/local/lib64 on most Linux 64-bit OSes (but not ia64). The use of lib/lib64 can be overridden by the new variable LIBnn. o The default installation directory is now ${prefix}/${LIBnn}/R, /usr/local/lib64/R on most 64-bit Linux OSes and /usr/local/lib/R elsewhere. o The places where the doc, include and share directory trees are installed can be specified independently: see the R-admin manual. o We now test for wctrans_t, as apparently some broken OSes have wctrans but not wctrans_t (which is required by the relevant standards) . o Any external BLAS found is now tested to see if the complex routine zdotu works correctly: this provides a compatibility test of compiler return conventions. o Installation without NLS is now cleaner, and does not install any message catalogues. o src/modules/lapack/dlamc.f is now compiled with -ffloat-store if f2c/gcc are used, as well as if g77 is used. o All the Fortran code has been checked to be fully F77 compliant so there are no longer any warnings from F95 compilers such as gfortran. o The (not-recommended) options --with-system-zlib, --with-system-bzlib and -with-system-pcre now have 'system' in the name. o If a Java runtime environment is detected at configure time its library path is appended to LD_LIBRARY_PATH or equivalent. New Java-related variables JAVA_HOME (path to JRE/JDK), JAVA_PROG (path to Java interpreter), JAVA_LD_PATH (Java library path) and JAVA_LIBS (flags to link against JNI) are made available in Makeconf. o Ei-ji Nakama was contributed a patch for FPU control with the Intel compilers on ix86 Linux. MAC OS X INSTALLATION o --with-blas="-framework vecLib" --with-lapack and --with-aqua are now the default configure options. o The default framework version name was changed to not contain the patch level (i.e. it is now 2.2 instead of 2.2.0). Also it can be overridden at configure time by setting FW_VERSION to the desired name. o The Rmath stand-alone library is now correctly installed inside the R.framework if R was configured as a framework. In addition, make install-Rmath-framework will install a stand-alone Rmath framework in /Library/Frameworks (unless overridden by RMATH_FRAMEWORK_DIR specifying full framework path and name including the .framework extension). PACKAGE INSTALLATION o The encoding for a packages' 00Index.html is chosen from the Encoding: field (if any) of the DESCRIPTION file and from the \encoding{} fields of any Rd files with non-ASCII titles. If there are conflicts, first-found wins with a warning. o R_HOME/doc/html/packages.html is now remade by R not Perl code. This may result in small changes in layout and a change in encoding (to UTF-8 where supported). o The return value of new.packages() is now updated for any packages which may be installed. o available.packages() will read a compressed PACKAGES.gz file in preference to PACKAGES if available on the repository: this will reduce considerably the download time on a dialup connection. The downloaded information about a repository is cached for the current R session. o The information about library trees found by installed.packages() is cached for the current session, and updated only if the modification date of the top-level directory has been changed. o A data index is now installed for a package with a 'data' dir but no 'man' dir (even though it will have undocumented data objects). o contrib.url path for type="mac.binary" has changed from bin/macosx/ to bin/macosx//contrib/ where corresponds to R.version$arch UTILITIES o checkFF() used by R CMD check has since R 2.0.0 not reported missing PACKAGE arguments when testing installed packages with namespaces. It now - treats installed and source packages in the same way. - reports missing arguments unless they are in a function in the namespace with a useDynLib declaration (as the appropriate DLL for such calls can be searched for). o Rd2dvi sets the encoding(s) used appropriately. If UTF-8 encoding is used, latex >= 2003/12/01 is required. o codoc() allows help files named pkg_name-defunct.Rd to have undocumented arguments (and not just base-defunct.Rd). C-LEVEL FACILITIES o C function massdist() {called from density()} has new argument 'xmass' (= weights). o Raw vectors passed to .C() are now passed as unsigned char * rather than as SEXPs. (Wish of Keith Frost, PR#7853) o The search for symbols in a .C/.Call/... call without a package argument now searches for an enclosing namespace and so finds functions defined within functions in a namespace. o R_max_col() has new (5th) argument '*ties_meth' allowing non-random behavior in the case of ties. o The header files have been rationalized: the BLAS routine LSAME is now declared in BLAS.h not Linpack.h, Applic.h no longer duplicates routines from Linpack.h, and Applic.h is divided into API and non-API sections. o memory.c has been instrumented so that Valgrind can track R's internal memory management. To use this, configure using --with-valgrind-instrumentation=level where level is 1 or 2. Both levels will find more bugs with gctorture(TRUE). Level 2 makes Valgrind run extremely slowly. o Some support for raw vectors has been added to Rdefines.h. o R_BaseEnv has been added, to refer to the base environment. This is currently equal to R_NilValue, but it will change in a future release. BUG FIXES o %/% has been adjusted to make x == (x %% y) + y * ( x %/% y ) more likely in cases when extended-precision registers were interfering. o Operations on POSIXct objects (such as seq(), max() and subsetting) try harder to preserve time zones and warn if inconsistent time zones are used. o as.function.default() no longer asks for a bug report when given an invalid body. (PR#1880, PR#7535, PR#7702) o Hershey fonts and grid output (and therefore lattice output) now rescale correctly in fit-to-window resizing on a Windows graphics device. Line widths also scale now. o Plotmath has more support for multibyte characters (contributed by Ei-ji Nakama). o The X11() device now hints the window manager so that decorations appear reliably under e.g. the GNOME WM (contributed by Ei-ji Nakama). o Subsetting a matrix or an array as a vector used to attempt to use the row names to name the result, even though the array might be longer than the row names. Now this is only done for 1D arrays when it is done in all cases, even matrix indexing. (Tidies up after the fix to PR#937.) o Constants in mathlib are declared 'const static double' to avoid performance issues with the Intel Itanium compiler. o The parser checks the format of numeric constants more thoroughly so for example '123E-' is no longer valid. o contourLines() no longer requires an open device (used to start a device unnecessarily). Fix suggested by Barry Rowlingson. o capabilities() used partial matching but was not documented to: it no longer does so. o kernel(1,0) printed wrongly; kernel(, *) now returns a named kernel in all cases; plot(kernel(.),..) is more flexible. o qgamma(1,s) didn't give +Inf for some s. o installed.packages() and download.packages() now always return a matrix as documented, possibly with 0 rows (rather than a 0-length character vector or NULL). o Arithmetic operations on data frames no longer coerce the names to syntatically valid names. o Units are now properly recycled in grid layouts when 'widths' or 'heights' are shorter than the number of columns or rows (PR#8014). o DF <- data.frame(A=1:2, B=3:4); DF[1, 1:3] <- NULL gave a wrong error message. o spline()/spinefun()'s C code had a memory access buglet which never lead to incorrect results. (PR#8030) o sum() was promoting logical arguments to double not integer (as min() and other members of its group do). o loess() had a bug causing it to occasionally miscalculate standard errors (PR#7956). Reported by Benjamin Tyner, fixed by Berwin Turlach. o library(keep.source=) was ignored if the package had a namespace (the setting of options("keep.source.pkgs") was always used). o hist.POSIXct() and hist.Date() now respect par("xaxt"). o The 'vfont' argument was not supported correctly in title(), mtext(), and axis(). The 'vfont' argument is superseded by the par(family=) approach introduced in 2.0.0. This bug-fix just updates the warning messages and documentation to properly reflect the new order of things. o The C-level function PrintGenericVector could overflow if asked to print a length-1 character vector of several thousand characters. This could happen when printing a list matrix, and was fatal up to 2.1.1 and silently truncated in 2.1.1 patched. o What happened for proc.time() and system.time() on (Unix-alike) systems which do not support timing was incorrectly documented. (They both exist but throw an error.) Further, systen.time() would give an error in its on.exit expression. o weighted.residuals() now does sensible things for glm() fits: in particular it now agrees with an lm() fit for a Gaussian glm() fit. (PR#7961). o The 'lm' and 'glm' methods for add1() took the weights and offset from the original fit, and so gave errors in the (dubious) usage where the upper scope resulted in a smaller number of cases to fit (e.g. by omitting missing values in new variables). (PR#8049) o demo() had a 'device' argument that did nothing (although it was documented to): it has been removed. o Setting new levels on a factor dropped all existing attributes, including class "ordered". o format.default(justify="none") now by default converts NA character strings, as the other values always did. o format.info() often gave a different field width from format() for character vectors (e.g. including missing values or non-printable characters). o axis() now ensures that if 'labels' are supplied as character strings or expressions then 'at' is also supplied (since the calculated value for 'at' can change under resizing). o Defining S4 methods for "[" had resulted in changed behavior of S3 dispatch in a very rare case which no longer happens. o Fixed segfault when PostScript font loading fails, e.g., when R is unable to find afm files (reported by Ivo Welch). o R CMD BATCH now also works when does not end in a newline on Unix-alike platforms. o terms.formula() got confused if the 'data' argument was a list with non-syntactic names. o prompt() and hence package.skeleton() now produce *.Rd files that give no errors (but warnings) when not edited, much more often. o promptClass() and promptMethods() now also escape "%" e.g. in '%*%' and the latter gives a message about the file written. o wilcox.test() now warns when conf.level is set higher than achievable, preventing errors (PR#3666) and incorrect answers with extremely small sample sizes. o The default (protection pointer) stack size (the default for '--max-ppsize') has been increased from 10000 to 50000 in order to match the increased default options("expressions") (in R 2.1.0). o The R front-end was expecting --gui=tk not Tk as documented, and rejecting --gui=X11. o Rdconv -t latex protected only the first << and >> in a chunk against conversion to guillemets. o callNextMethod() and callGeneric() have fixes related to handling arguments. o ls.diag() now works for fits with missing data. (PR#8139) o window.default() had an incorrect tolerance and so sometimes created too short a series if 'start' or 'end' were zero. o Some (fairly pointless) cases of reshape left a temporary id variable in the result (PR#8152) o R CMD build used 'tar xhf' which is invalid on FreeBSD systems (and followed tar chf, so there could be no symbolic links in the tarball). o Subassignment of length zero vectors to NULL gave garbage answers. (PR#8157) o Automatic coercion of raw vectors to lists was missing, so for a list (or data frame) z, z[["a"]] <- raw_vector did not work and now does. This also affected DF$a <- raw_vector for a data frame DF. o The internal code for commandArgs() was missing PROTECTs. o The width for strwrap() was used as one less than specified. o R CMD INSTALL was not cleaning up after an unsuccessful install of a non-bundle which was not already installed. -- O__ ---- Peter Dalgaard ?ster Farimagsgade 5, Entr.B c/ /'_ --- Dept. of Biostatistics PO Box 2099, 1014 Cph. K (*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918 ~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk) FAX: (+45) 35327907 From p.dalgaard at biostat.ku.dk Tue Dec 20 12:01:38 2005 From: p.dalgaard at biostat.ku.dk (Peter Dalgaard) Date: 20 Dec 2005 12:01:38 +0100 Subject: R 2.2.1 is released Message-ID: I've rolled up R-2.2.1.tar.gz a short while ago. This is a maintenance release containing mainly bugfixes. See the full list of changes below. You can get it from http://cran.r-project.org/src/base/R-2/R-2.2.1.tar.gz (give it some time to arrive there) or wait for it to be mirrored at a CRAN site nearer to you. If you're *really* impatient, http://www.biostat.ku.dk/~pd/R-release should work too. 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: 94d55d512a9ba36caa9b7df079bae19f COPYING fad9b3332be894bab9bc501572864b29 COPYING.LIB de541086db1146c1595d5be1d94a1b94 FAQ 70447ae7f2c35233d3065b004aa4f331 INSTALL 2c832b91154f663c0f07930d5e2a3dee NEWS 88bbd6781faedc788a1cbd434194480c ONEWS 4f004de59e24a52d0f500063b4603bcb OONEWS 42542290c6d1585af7ded330f811385c R-2.2.1.tar.gz a9126622c51bef60e3febb41b2e737e5 R-2.2.1.tar.gz-split.aa e89b51f6dbc1ddffd646a3f1f203f4f1 R-2.2.1.tar.gz-split.ab 15d93b1b5c38b6178ddcf9485dbd8cf1 R-2.2.1.tar.gz-split.ac 282bbbdd00c0066b6042ce16844036be R-2.2.1.tar.gz-split.ad 6d00347225140283e6c93f253cb7c180 R-2.2.1.tar.gz-split.ae 2441c58fc24a69dd5cc65517a0b5e285 R-2.2.1.tar.gz-split.af 4ddcd13639debd984e3664a6b0681bd4 R-2.2.1.tar.gz-split.ag 4a042d73ec00d7d46be1cc704063dc39 R-2.2.1.tar.gz-split.ah 0d5d54a78ab994bacb12a98bece1306f R-2.2.1.tar.gz-split.ai 69b38c655e4c1b7c36cb0abaa4890253 R-2.2.1.tar.gz-split.aj 42542290c6d1585af7ded330f811385c R-latest.tar.gz 56a780cdec835c5c598f8dfc0738f7f3 README 020479f381d5f9038dcb18708997f5da RESOURCES Here is the relevant part of the NEWS file: USER-VISIBLE CHANGES o options("expressions") has been reduced to 1000: the limit of 5000 introduced in 2.1.0 was liable to give crashes from C stack overflow. NEW FEATURES o Use of 'pch' (e.g. in points) in the symbol font 5 is now interpreted in the single-byte encoding used by that font. Similarly, strwidth now recognizes that font 5 has a different encoding from that of the locale. (These are likely to affect the answer only in MBCS locales such as UTF-8.) o The URW font metrics have been updated to versions from late 2002 which cover more glyphs, including Cyrillic. o New postscript encodings for CP1250 (Windows East European), ISO Latin-7 (8859-13, Latvian, Lithuanian and Maori), Cyrillic (8859-5), KOI8-R, KOI8-U and CP1251. o configure has more support for the Intel and Portland Group compilers on ix86 and x86_64 Linux. o R CMD INSTALL will clean up if interrupted (e.g. by ctrl-C from the keyboard). o There is now a comprehensive French translation of the messages, thanks to Philippe Grosjean. DEPRECATED & DEFUNCT o The undocumented use of atan() with two arguments is deprecated: instead use atan2() (as documented). o The 'vfont' argument of axis() and mtext() is deprecated (it currently warns and does nothing). o The function mauchley.test() is deprecated (was a misspelling) and replaced by mauchly.test() BUG FIXES o The malloc's of AIX and OSF/1 which return NULL for size 0 are now catered for in src/main/regex.c. o Names of list elements which are missing are now printed as $ and not $"NA" (which is how the non-missing name "NA" is printed). (Brought up in discussion of PR#8161.) o help.start() was not linking R.css for use by its front page and immediate links (2.2.0 only). o Indexing by character NA matched the name "NA". o The arith-true test used random inputs and did not set the seed, so it could fail very occasionally. o arima() with 'fixed' supplied and p=0 for the non-seasonal part could give spurious warnings about 'some AR parameters were fixed'. o summary.matrix() could give an infinite recursion on some classed objects (e.g. those of class "Surv"). o The 255th character in an 8-bit character set was not handled correctly as a letter on some platforms where C char is signed: for example it was printed as \377 and not allowed in variable names. (Spotted by Alexey Shipunov in Russian encodings.) o Conversion from POSIXct to POSIXlt is done more accurately around the change of DST in years not supported by the OS (pre-1970 on Windows and some others, and in the far past or future). o chisq.test(cbind(1:0, c(7,16)), simulate.p = TRUE) gave wrong P-values on some platforms. (PR#8224) o pdf() was not writing details of the encoding to the file correctly. (Spotted by Alexey Shipunov in Russian encodings.) o image() was failing with an error when plotting a matrix of all NA values. (PR#8228) image() could fail if called with add=FALSE (the default) and length(x)=1 for either x or y, as it uses the plot coordinates of the previous plot (if any). o tools::checkMD5sums was not accepting file names with spaces in. o The plot() method for TukeyHSD() needed updating after adding adjusted p-values. (PR#8229) o read.fwf() did not work for header = TRUE. (PR#8226) o diag() failed when its argument had NA values in its dimnames. o [g]sub(pcre=TRUE) did not work correctly with \U and \L in a UTF-8 locale, even on the example on the help page. o promptMethods() was failing if the "methods" argument was supplied. o is.loaded() now finds Fortran symbols whether or not the registration mechanism has been used. o ISODateTime() mistakenly corrected non-existent times (when DST was being started) in the current time zone. o Some replacement operations on data frames gave incorrect answers, e.g. DF[3:4, "y"] if column "y" did not exist or was a matrix. o getGraphicsEvent() would cause memory corruption if passed an empty prompt. o qr() and chol() now pivot the colnames of the result when pivoting is used. (PR#8258) o example(points) omitted pch=0, although it was valid and said in the text to be illustrated. o plot.default() had an unused 'lab' argument, thereby preventing the 'lab' graphics parameter being passed through '...' . o Although polygon(col = NA) was the stated default, specifying NA was not equivalent to omitting the argument (but col=NULL was equivalent). o Im(-1) was pi. (PR#8272, a side effect from all previous versions of R returning the same value for Im and Arg of non-complex numbers.) o symbols(fg) defaulted to colour 1, not par("col") as documented. It does now defaults to par("col"). o par("family") did not check the length of the value (up to 49 bytes) and so could segfault. o aggregate.ts() did not allow for rounding in frequencies such as 1/5. o prcomp(tol=) was not dropping the sdev's corresponding to dropped columns. o Subassignment of a vector which increased the length of the vector _and_ had the wrong length of replacement could occasionally segfault. (This has been there since at least mid 1997.) o The registration of .Fortran symbols was broken: these could only be looked up if there were also .Call symbols registered! o R CMD build was incorrectly rejecting the recommended form of name for a translation package, 'Translation-ll'. (PR#8314) o numericDeriv() gave nonsense results unless the variables were real, which was not checked. o predict.prcomp() would sometimes give an error when predicting a single observation. (PR#8324) o mapply() could segfault if MoreArgs was not a list. (PR#8332) o The arith-true test used identical() on floating-point results, and this allowed a failure when the relative difference was less than .Machine$double.eps but non-zero. o qbinom() was not accepting p = -Inf when log.p = TRUE, although it is a legitimate value. o write.csv[2] only accepted logical constants for 'row.names', and now accepts variables. o Conversion of .Rd files did not correctly match braces enclosing a whole argument, e.g. \eqn{{\bf a}}{a}. o The C function pythag (used if hypot was not available) would infinite-loop on systems with effective optimizing compilers. o Writing long formats (more than 1000 bytes) with connections that use dummy_vfprintf could fail on some systems. The limit has been changed to 100000 bytes pending a more complete fix in R 2.3.0. o Making in src/nmath/standalone without making R was not making Rmath.h. o Both the R front-end and INSTALL could find the attempted temporary directory name already in use on platforms without mktemp (and a genuine Bourne shell /bin/sh, not bash). Now both the process ID and a timestamp are used to create the directory name. o [dpqr]gamma now return NaN for an invalid 'shape' parameter (rather than throw an error), for consistency with other distribution functions. o t() now longer drops dimnames 'list(NULL,NULL)' or 'list(NULL)'. o Influence measures such as rstandard() and cooks.distance() could return infinite values rather than NaN for a case which was fitted exactly. Similarly, plot.lm() could fail on such examples. plot.lm(which = 5) had to be modified to only plot cases with hat < 1. (PR#8367) lm.influence() was incorrectly reporting 'coefficients' and 'sigma' as NaN for cases with hat = 1, and on some platforms not detecting hat = 1 correctly. o Rmath.h for standalone Rmath was not recording HAVE_WORKING_LOG, so R_log was not available on platforms defining it. o HoltWinters() was using a slightly incorrect formula in the C code. o dir.create() could be confused by a trailing slash on the path, and by paths containing drives on Windows. o The search for tcl/tkConfig.sh looked in 'lib' before 'lib64' directories (and not at all in /usr/local/lib64) and so might prefer 32- to 64-bit versions if both are available. o nlminb() used an uninitialized variable unless bounds were supplied, and so failed on 64-bit Solaris. -- O__ ---- Peter Dalgaard ?ster Farimagsgade 5, Entr.B c/ /'_ --- Dept. of Biostatistics PO Box 2099, 1014 Cph. K (*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918 ~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk) FAX: (+45) 35327907