Rev 34391 | Blame | Last modification | View Log | RSS feed
Dear Emacs, please make this -*-Text-*- mode!*************************************************** ** 2.2 SERIES NEWS ** ***************************************************CHANGES IN R VERSION 2.2.0USER-VISIBLE CHANGESo plot(<lm object>) uses a new default for the fourth panel when'which' is not specified.___ may change before release ___o graphics::xy.coords, xyz.coords and n2mfrow have been moved tothe grDevices name space (to be available in grid as well).o If R is built from a snapshot tarball, the SVN revision numberwill appear after the date in the welcome message.NEW FEATURESo The specification of the substitutions done when processingRenviron files is more liberal: see ?Startup. It nowaccepts forms like R_LIBS=${HOME}/Rlibrary:${WORKGRP}/R/lib .o R.home() has been expanded to return the paths to components(which can as from this version be installed elsewhere).o Added tclServiceMode() function to the tcltk package to allowupdating to be suspended.o barplot() now has arguments 'log = ""' and 'add = FALSE'(as in barplot2() from package 'gplots').o smooth.spline() has a new argument 'keep.data' which allows toprovide residuals() and fitted() methods for smoothing splines.o plot.lm() has two new plots (for 'which' = 5 or 6), plottingresiduals or cook distances versus (transformed) leverages.The default for 'sub.caption' has been improved for long calls.o [g]sub() now have a 'useBytes' argument like grep() and regexpr().o density() is now an S3 generic where density.default() {formerdensity()} has new argument 'weights' for specifying observationmasses different than the default 1/N -- based on a suggestion andcode from Adrian Baddeley.o The default mosaicplot() method by default draws grey boxes.o labels() now has a method for "dist" objects (replacing thatfor names() which was withdrawn in 2.1.0).o checkDocFiles() in package 'tools' now checks for bad \usagelines (syntactically invalid R code).o dump() now skips missing objects with a warning rather thanthrow an error.o Hexadecimal values are now allowed for as.numeric() andas.integer() on all platforms, and as integer constants in R code.o New option("OutDec") to set the decimal point for output conversions.[Experimental for now.]o New functions URLencode() and URLdecode(), particularly for usewith file:// URLs. These are used by e.g. browse.env(),download.file(), download.packages() and various help() print methods.o [g]sub(perl = TRUE) support \L and \U in the replacement.o match.arg() has a new argument 'several.ok = FALSE'.o write() has a new argument 'sep'.o New function trans3d(), the 3D -> 2D utility from persp()'s example.DEPRECATED & DEFUNCTo 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() isdefunct in favour of 'repos'.INSTALLATIONo LDFLAGS now defaults to -L/usr/local/lib64 on most Linux64-bit OSes (but not ia64). The use of lib/lib64 can beoverridden 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/Relsewhere.o The places where the doc, include and share directory trees areinstalled can be specified independently: see the R-admin manual.PACKAGE INSTALLATION CHANGESo The encoding for a packages' 00Index.html is chosen from theEncoding: 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 inencoding (to UTF-8 where supported).o The return value of new.packages() is now updated for anypackages which may be installed.C-LEVEL FACILITIESo C function massdist() {called from density()} has new 2nd argument'xmass' (= weights).o Raw vectors passed to .C() are now passed as unsigned char * ratherthan as SEXPs. (Wish of Keith Frost, PR#7853)BUG FIXESo Printing was not allowing for double-width characters in itslayout.o %/% has been adjusted to make x == (x %% y) + y * ( x %/% y )more likely in cases when extended-precision registers wereinterfering.o Operations on POSIXct objects (such as seq(), max() andsubsetting) try harder to preserve time zones and warn ifinconsistent time zones are used.*************************************************** ** 2.1 SERIES NEWS ** ***************************************************CHANGES IN R VERSION 2.1.0 patchedNEW FEATURESo bug.report() now reports the locale in use.o upgrade.packageStatus() allows user input "c" to cancel theupgrade, 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 allowupdating to be suspended.o The Encoding: field of a DESCRIPTION file is now documented,and used by packageDescription() and library(help=).BUG FIXESo 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 tcltkwas not available.o When names.dist() was removed, the result of cmdscale() lostits 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 fieldsin the first five lines of the file. (PR#7789)It was also not handling correctly EOF in the first five lineswhen reading from stdin(). (PR#7772)o 'make uninstall' was incomplete.o make.packages.html() called by help.start() was failing ifthere were installed packages with help titles invalid in thecurrent locale.o printCoefmat(signif.legend = FALSE) was non-functional. (PR#7802)o Some as.date.frame() methods failed because the expressiondeparsed into multiple lines. (PR#7808)o setRepositories() had a typo. (PR#7810)o Printing arrays/data frames with multibyte characters in thecolumn 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 toinstall.packages().o Printing the result of an unbalanced model.tables() callsometimes got confused if terms() had rearranged interactionterms. (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 namescontaining "and". (PR#7797)o Subscripting an array by a matrix containing zero or negativevalues or the wrong number of columns was not handledconsistently. (PR#7824)o select.list(multiple=TRUE) now detects and tries again for invalidtext input.o add1.[g]lm could give strange results with interaction termswhen the model and the upper scope had different orders forthe main effects. (PR#7842)o A bug had sneaked into the anova.mlmlist() code, affecting theGreenhouse-Geisser epsilon. Code wrongly assumed a matrix tobe symmetric. (Thanks to Bela Bauer.)o anova.mlmlist() and mauchley.test() are now more tolerant to rankdeficiency in the M and X matrices (also when they are implicitlygenerated via model.matrix()).o pf() with one infinite df is allowed again. It is now moreaccurate for extreme ratios of dfs, especially when there is anon-centrality parameter.o df() was inaccurate for large df (1e16 or greater).o dt() was inaccurate for large df (1e9 or greater) with anon-centrality parameter.o runmed(*, algorithm="Turlach") seg.faulted in rare cases.o strwrap() now makes a reasonable job of text that is invalid in thecurrent locale.o Reading with encoding "UCS-2LE" will remove any Byte OrderMark, as most implementations of iconv fail to handle BOMs(which are present in 'Windows Unicode' files).o unique() for a list was incorrectly returning `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 afilepath (rather than a URL). For 2.1.0 only, it did not workeven if 'file' was a filepath.o Hershey fonts were being sized based on pixels not points so cameout too small on devices where pixels were noticeably differentfrom points (e.g., win.printer() and high-resolution screens).Fix means that default size of Hershey fonts may be slightlydifferent, for example, smaller by default on PostScript and PDF.o The branch cuts in the complex versions of the inversetrigonometric and hyperbolic functions were non-standard.(PR#7871)CHANGES IN R VERSION 2.1.0USER-VISIBLE CHANGESo box plots {by boxplot() or bxp()} now have the median line threetimes the normal line width in order to distinguish it from thequartile ones.o Unix-alike versions of R can now be used in UTF-8 locales onsuitably equipped OSes. See the internationalization sectionbelow.o The meaning of 'encoding' for a connection has changed: See theinternationalization section below.o There has been some rationalization of the format ofwarning/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 FEATURESo %% now warns if its accuracy is likely to be affected by lackof precision (as in 1e18 %% 11, the unrealistic expectation ofPR#7409), and tries harder to return a value in range when it is.o abbreviate() now warns if used with non-ASCII chars, as thealgorithm is designed for English words.o The default methods for add1() and drop1() check for changesin the number of cases in use.The "lm" and "glm" methods for add1() quoted the <none> modelon the original fitted values when using (with a warning) asmaller 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, asdocumented 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 anew 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 possibleto 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) nin accordance with the general binomial theorem. choose(*,k)is more accurate (and faster) for small k.o Added colorRamp() and colorRampPalette() functions for colorinterpolation.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" thatinvoke 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 afterremoval of missing values, not before. The pairwise-completemethod should now be consistent with cor.test. (Codecontributed by Shigenobu Aoki.)o Added delayedAssign() function to replace delay(), which is nowdeprecated.o dir.create() has a new argument 'recursive' serving the samepurpose as Unix's mkdir -p.o do.call() now takes either a function or a character string asits first argument. The supplied arguments can optionally bequoted.o duplicated() and unique() now accept "list" objects, but arefast 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 termwith more than one degree of freedom: this is now documentedand checked for. Where each term only occurs in only onestratum the efficiencies are all one: this is detected andorthogonal contrasts are not required.o New function encodeString() to encode character strings in thesame way that printing does.o file("clipboard") now work for reading the primary selection onUnix-alikes with an active X11 display. (It has long workedfor reading and writing under Windows.) The secondaryselection 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 ofappending many files to a single file.o Functions flush.console() and select.list() are now availableon all platforms. There is a Tcl/Tk-based version ofselect.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 allowmouse or keyboard input from a graphics device. (NB: currentlyonly the Windows screen device supports this function. Thisshould improve before the 2.1.0 release.)o New functions gray.colors()/grey.colors() for gray colorpalettes.o grep(), gsub(), sub() and regexpr() now always attempt tocoerce their 'pattern', 'x', 'replacement' and 'text'arguments to character. Previously this was undocumented butdone by [g]sub() and regexpr() for some values of theirother 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 aprint() method.Two alternative algorithms have been implemented.If the number of centres is supplied, it has a new option ofmultiple random starts.o The limits on the grid size in layout() are now documented, andhave been raised somewhat by using more efficient internalstructures.o legend() now accepts positioning by keyword, e.g. "topleft",and can put a title within the legend. (Suggested by ElizabethPurdom in PR#7400.)o mahalanobis() now has a '...' argument which is passed to solve()for computing the inverse of the covariance matrix, this replacesthe former 'tol.inv' argument.o menu() uses a multi-column layout if possible for more than10 choices.menu(graphics = TRUE) is implemented on most platforms viaselect.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 argumentrenamed to 'object'.o New function normalizePath() to find canonical paths (and onWindows, 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 atleast one of the shape parameters, which is much faster and isaccurate and reliable for very large values. (This affectspbinom(), pf(), qbeta() and other functions using pbeta at Clevel.)o pch="." now by default produces a rectangle at least 0.01" perside on high-resolution devices. (It used to be one-pixelsquare 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 thatthe 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 thedefault for postscript()).o plot.data.frame() tries harder to produce sensible plots fornon-numeric data frames with one or two columns.o The predict() methods for "prcomp" and "princomp" now matchthe columns of 'newdata' to the original fit using columnnames if these are available.o New function recordGraphics() to encapsulate calculationsand graphics output together on graphics engine display list.To be used with care.o New function RSiteSearch() to query R-related resourceson-line (contributed by Jonathan Baron and Andy Liaw).o scan() arranges to share storage of duplicated characterstrings read in: this can dramatically reduce the memoryrequirements for large character vectors which willsubsequently be turned into factors with relatively fewlevels. For a million items this halved the time and reducedstorage by a factor of 20.scan() has a new argument 'allowEscapes' (default TRUE) thatcontrols when C-style escapes in the input are interpreted.Previously only \n and \r were interpreted, and then onlywithin quoted strings when no separator was supplied.scan() used on an open connection now pushes back on theconnection its private `ungetc' and so is safer to use toread partial lines.o scatter.smooth() and loess.smooth() now handle missing valuesin 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 specifierslike "%2$6d", and also accepts "%x" and "%X".sprintf() does limited coercion of its arguments.sprintf() accepts vector arguments and operates on them inparallel (after re-cycling if needed).o New function strtrim() to trim character vectors to a displaywidth, allowing for double-width characters in multi-bytecharacter sets.o subset() now has a method for matrices, similar to that fordata frames.o Faster algorithm in summaryRprof().o sunflowerplot() has new arguments 'col' and 'bg'.o sys.function() now has argument 'which' (as has long beenpresaged on its help page).o Sys.setlocale("LC_ALL", ) now only sets the locale categorieswhich R uses, and Sys.setlocale("LC_NUMERIC", ) now gives awarning (as it can cause R to malfunction).o unclass() is no longer allowed for environments and externalpointers (since these cannot be copied and so unclass() wasdestructive 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 immediatewarning.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 timesfaster than before, and uses negligible memory compared to theobject size.The old version (which no longer coerces a matrix to a dataframe and then back to a matrix) is available for now aswrite.table0().o The functions xinch(), yinch(), and xyinch() have been movedfrom 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 moduleis only loaded if needed.o The X11 module (and the hence X11(), jpeg() and png() devicesand the X-based dataentry editor) is now in principleavailable under all Unix GUIs except --gui="none", and this isreflected 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 thereare more than two dimensions.o Tabular printing of numbers now has headers right-justified, asthey 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 suchas USB flash drives. There is a small (less than 2Mb)increase in default memory usage.o The implicit class structure for numeric vectors has beenchanged, so that integer/real vectors try first methods forclass "integer"/"double" and then those for class "numeric".The implicit classes for matrices and arrays have been changedto be "matrix"/"array" followed by the class(es) of theunderlying vector.o splines::splineDesign() now allows the evaluation of a B-splinebasis everywhere instead of just inside the "inner" knots, bysetting 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() workswith Computer Modern fonts.o Replacement in a non-existent column of a data frame triesharder to create a column of the correct length and so avoid acorrupt data frame.o For Windows and readline-based history, the saved file size isre-read from R_HISTSIZE immediately before saving.o Collected warnings during start-up are now printed before theinitial prompt rather than after the first command.o Changes to package 'grid':- preDrawDetails(), drawDetails(), and postDrawDetails()methods are now recorded on the graphics enginedisplay list. This means that calculations within thesemethods are now run when a device is resized orwhen 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-levelgrobs on the display list.- Recording on the grid display list is turned off withinpreDrawDetails(), drawDetails(), and postDrawDetails() methods.- Grid should recover better from errors or user-interruptsduring drawing (i.e., not leave you in a strange viewportor with strange graphical parameter settings).- New function grid.refresh() to redraw the grid display list.- New function grid.record() to capture calculationswith grid graphics output.- grobWidth and grobHeight ("grobwidth" and "grobheight" units)for primitives (text, rects, etc, ...) are nowcalculated based on a bounding box for the relevant grob.NOTE: this has changed the calculation of the size of a scalarrect (or circle or lines).- New arguments 'warn' and 'wrap' for function grid.grab()- New function grid.grabExpr() which captures the output froman expression (i.e., not from the current scene) withoutdoing 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 propertynot a property of graphical objects; suggested by Ross Ihaka).- New 'lex' gpar; a line width multiplier.- grid.text() now handles any language object as mathematicalannotation (instead of just expressions).- plotViewport() has default value for 'margins' argument (that matchthe 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 andthe 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 ineach direction (e.g., so that several pieces of text can havedifferent justifications).(suggested by Ross Ihaka)- New 'edits' argument for grid.xaxis() and grid.yaxis() toallow specification of on-the-fly edits to axis children.- applyEdit(x, edit) returns x if target of edit (i.e., childspecified by a gPath) cannot be found.- Fix for calculation of length of max/min/sum unit. Length isnow (correctly) reported as 1 (was reported as length of first arg).- Viewport names can now be any string (they used to have to be avalid R symbol).- The 'label' argument for grid.xaxis() and grid.yaxis() can nowalso be a language object or string vector, in which case itspecifies custom labels for the tick marks.INTERNATIONALIZATIONo Unix-alike versions of R can now be used in UTF-8 and othermulti-byte locales on suitably equipped OSes if configuredwith option --enable-mbcs (which is the default). [Thechanges to font handling in the X11 module are based on theJapanization patches of Eiji Nakama.]Windows versions of R can be used in `East Asian' locales onsuitable versions of Windows.See the 'Internationalization' chapter in the 'Installationand Administration' manual.o New command-line flag --encoding to specify the encoding tobe assumed for stdin (but not for a console).o New function iconv() to convert character vectors betweenencodings, on those OSes which support this. See the newcapabilities("iconv").o The meaning of 'encoding' for a connection has changed: it nowallows any charset encoding supported by iconv on theplatform, and can re-encode output as well as input.As the new specification is a character string and the old wasnumeric, this should not cause incorrect operation.o New function localeToCharset() to find/guess encoding(s) fromthe locale name.o nchar() returns the true number of bytes stored (including anyembedded nuls), this being 2 for missing values. It has anoptional argument 'type' with possible non-default values"chars" and "width" to give the number of characters or thedisplay width in columns.o Characters can be entered in hexadecimal as e.g. \x9c, and inUTF-8 and other multibyte locales as \uxxxx, \u{xxxx},\Uxxxxxxxx or \U{xxxxxxxx}. Non-printable Unicode charactersare displayed C-style as \uxxxx or \Uxxxxxxxx.o LC_MONETARY is set to the locale, which affects the result ofSys.localeconv(), but nothing else in R itself. (It couldaffect add-on packages.)o source() now has an 'encoding' argument which can be used tomake it try out various possible encodings. This is made useof by example() which will convert (non-UTF-8) Latin-1 examplefiles 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 issupported by the OS. See `Writing R Extensions'.o delimMatch (tools) now reports match positions and lengths inunits of characters, not bytes. The delimiters can bestrings, not just single ASCII characters.o .Rd files can indicate via a \encoding{} argument the encodingthat should be assumed for non-ASCII characters they contain.o Phrases in .Rd files can be marked by \enc{}{} to show atransliteration to ASCII for use in e.g. text help.o The use of 'pch' in points() now allows for multi-byte charactersets: in such a locale a glyph can either be specified as amulti-byte single character or as a number, the Unicode point.o New function l10n_info() reports on aspects of thelocale/charset currently in use.o scan() is now aware of double-byte locales such as Shift-JISin which ASCII characters can occur as the second ('trail')byte.o Functions sQuote() and dQuote() use the Unicode directionalquotes if in a UTF-8 locale.o The infrastructure is now in place for C-level error and warningmessages to be translated and used on systems with NativeLanguage Support. This has been used for the startup messagein English and to translate Americanisms such as 'color' intoEnglish: translations to several other languages are underway, and some are included in this release.See 'Writing R Extensions' for how to make use of this in apackage: all the standard packages have been set up to dotranslation, and the 'language' 'en@quot' is implemented toallow Unicode directional quotes in a UTF-8 locale.o R-level stop(), warning() and message() messages can betranslated, as can other messages via the new functiongettext(). Tools xgettext() and xgettext2pot() are provided inpackage tools to help manage error messages.gettextf() is a new wrapper to call sprintf() usinggettext() on the format string.o Function ngettext() allows the management of singular andplural forms of messages.UTILITIESo 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 LFline 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 outinformation about the version of R and the package.o tools:::.install_package_code_files() (used to collate R fileswhen installing packages) ensures files are separated by aline feed.o vignette() now returns an object of class "vignette" whoseprint() method opens the corresponding PDF file. The edit()method can be used to open the code of the vignette in aneditor.o R CMD INSTALL on Unix has a new option '--build' matchingthat 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 binarybuilds: in each case it prepares a source directory and theneither packages that directory as a tarball or calls R CMDINSTALL --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 thecurrent sources into a temporary library and uses that versionof 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 withpreparing local package repositories. (Based on a contributionby Uwe Ligges.) How to prepare such repositories isdocumented 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 filesupresses auto-setting of the graphical parameter like widthof graphics.- The new \SweaveInput{} command works similar to LaTeX's\input{} command.- Option value strip.white=all strips all blank lines from theoutput of a code chunk.- Code chunks with eval=false are commented out by Stangle() andhence no longer tested by R CMD check.DOCUMENTATIONo 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 islinked to.)o Manual 'Writing R Extensions' has further details on writingnew 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 FACILITIESo There are new public C/C++ header files Rinterface.h andR_ext/RStartup.h for use with external GUIs.o Added an onExit() function to graphics devices, to be executedupon 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 justunder 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 & DEFUNCTo The aqua module for MacOS X has been removed: --with-aqua nowrefers to the unbundled Cocoa GUI.o Capabilities "bzip2", "GNOME, "libz" and "PCRE" are defunct.o The undocumented use of UseMethod() with no argument wasdeprecated 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() isdeprecated in favour of 'repos', which replaces it as apositional argument (so this is only relevant for calls withnamed args).o The S3 methods for getting and setting names of "dist" objectshave been removed (as they provided names with a differentlength 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 delayedAssign() instead.INSTALLATION CHANGESo New configure option --enable-mbcs to enable support forUTF-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. Thisensures that features such as inlining are only used if thecompilation flags specified support them. (PR#7257)o Files FAQ, RESOURCES, doc/html/resources.html are no longer inthe 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 anerror unless --with-recommended-packages=no (or equivalent) is used.o Configuring without having the X11 headers and libraries is nowan error unless --with-x=no (or equivalent) is used.o Configure tries harder to find a minimal set of FLIBS. Undersome circumstances this may remove from R_LD_LIBRARY_PATHpath elements that ought to have specified in LDFLAGS (butwere not).o The C code for most of the graphics device drivers and theirafm files are now in package grDevices.o R is now linked against ncurses/termlib/termcap only ifreadline is specified (now the default) and that requires it.o Makeinfo 4.7 or later is now required for building the HTML andInfo versions of the manuals.PACKAGE INSTALLATION CHANGESo There are new types of packages, identified by the Type fieldin the DESCRIPTION file. For example the GNOME console is nowa separate package (on CRAN), and translations can bedistributed as packages.o There is now support of installing from within R both source andbinary packages on MacOS X and Windows. Most of the Rfunctions now have a 'type' argument defaulting togetOption("pkgType") and with possible values "source","win.binary" and "mac.binary". The default is "source" exceptunder 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 ofa package from the first repository on the list in which it isfound. The argument 'CRAN' is still accepted, but deprecated.install.packages() on Unix can now install from local .tar.gzfiles via repos = NULL (as has long been done on Windows).install.packages() no longer asks if downloaded packagesshould be deleted: they will be deleted at the end of thesession 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 todisplay the available packages, on suitable systems.'dependencies' can be a character vector to allow only somelevels 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 acharacter vector (preferably named) giving one or severalrepositories.A new function chooseCRANmirror() will select a CRAN mirror.This is called automatically if the contrib.url() encountersthe initial dummy value of getOption("repos")A new function setRepositories() can be used to creategetOption("repos") from a (platform-specific) list of knownrepositories.o New function new.packages() to report uninstalled packagesavailable at the requested repositories. This also reportsincomplete 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 reportpackages whose R version requirements are met.o update.packages() and old.packages() have a new option'checkBuilt' to allow packages installed under earlierversions of R to be updated.o remove.packages() can now remove bundles.o The Contains: field of the DESCRIPTION file of package bundlesis now installed, so later checks can find out if the bundleis complete.o packageStatus() is now built on top of *.packages, and gains a'method' argument. It defaults to the same repositories asthe other tools, those specified by getOption("repos").BUG FIXESo Configuring for Tcl/Tk makes use of ${TK_LIB_SPEC} ${TK_LIBS}not ${TK_LIB_SPEC} ${TK_XLIBSW}, which is correct forrecent versions of Tk, but conceivably not for oldtkConfig.sh files.o detach() was not recomputing the S4 methods for primitivescorrectly.o Methods package now has class "expression" partly fixed in basicclasses, so S4 classes can extend these (but "expression" ispretty 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 fromnamespaces; 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 anempty 'doc' directory.o The print() method for factors now escapes characters in thelevels in the same way as they are printed.o str() removed any class from environment objects.str() no longer interprets control characters in characterstrings and factor levels; also no longer truncates factorlevels unless they are longer than 'nchar.max'.Truncation of such long strings is now indicated ''outside''the string.str(<S4.object>) was misleading for the case of a single slot.str() now also properly displays S4 class definitions (such asreturned by getClass().o print.factor(quote=TRUE) was not quoting levels, causingambiguity 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 dataframe 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)) for1D 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 invisiblydid not. This was behind PR#7397 and PR#7466.o eval(expr, NULL, encl) now looks up variables in encl, aseval(expr, list(), encl) always dido Coercing as.data.frame(NULL) to a pairlist caused an error.o p.adjust(p, ..) now correctly works when `p' contains NAs (or whenit 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 avalue of length 1 (spotted by Ben Bolker).o X11() was only scaling its fonts to pointsize if the dpiwas within 0.5 of 100dpi.o X11() font selection was looking for any symbol font, andsometimes 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 thesame as NA, which was also undocumented but omits the point.o Base graphics now notices (ab)lines which have a zerocoordinate on log scale, and omits them. (PR#7559)o stop() and warning() now accept NULL as they are documentedto 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 thedocumentation 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 couldsegfault 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 werenot handled properly and could result in a segfault.o The "aovlist" method for se.contrast() failed in some verysimple 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 workfor all (even very extreme) arguments; this is based on MortenWelinder'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")# andx <- 2^-(1070:170); plot(x, x^.9, type="l", log="xy")# now both worko summary.lm() asked for a report on a reasonable occurrence, butthe check failed to take account of NAs.o lm() was miscalculating 'df.residual' for empty models with amatrix response.o summary.lm() now behaves more sensibly for empty models.o plot.window() was using the wrong sign when adjustingxlim/ylim for positive 'asp' and a reversed axis.o If malloc() fails when allocating a large object the allocator nowdoes a gc and tries the malloc() again.o packageSlot() and getGroupMembers() are now exported from the'methods' package as they should from documentation and theGreen Book.o rhyper() was giving numbers slightly too small, due to a bug in theoriginal 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-lengthinitial match. (PR#7742)o [g]sub was ignoring most 0-length matches, including all initialones. Note that substitutions such as gsub("[[:space:]]*", "", ...) now work as they do in 'sed' (whereas the effect waspreviously the same as gsub("[[:space:]]+", " ", ...)).(In part PR#7742)o Promises are now evaluated when extracted from an environmentusing '$' or '[[ ]]'.o reshape(direction="wide") had some sorting problems whenguessing 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 Tclpackage turned out to be fallible. It now uses a try()-and-seemechanism instead.o Opening a unz() connection on a non-existent file left a filehandle 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 intoinfinite recursion anymore.o writeBin() performed byte-swapping incorrectly on complexvectors, also swapping real and imaginary parts. (PR#7778)o read.table() sometimes discarded as blank lines containingonly white space, even if sep=",".*************************************************** ** 2.0 SERIES NEWS ** ***************************************************CHANGES IN R VERSION 2.0.1 patchedNEW FEATURESo warnings() now looks only in the workspace for `last.warning'(suggested by PR#7363).o The search for browsers now starts with firefox, and has mozillaahead of netscape.PACKAGE INSTALLATION CHANGESo A package DESCRIPTION file which contains a Built field (itshould not!) is now worked around, with loud warnings.BUG FIXESo split() was accepting raw and list vectors as input, butnot populating the output correctly.split() now handles vectors with names internally and so isalmost as fast as on vectors without names (and maybe 100xfaster than before).o subset() now throws an error if its 'subset' argument is notlogical whereas it could appear to work and give wrong answerswith e.g. a numeric 'subset' argument.o sum(), max(), min(), prod(), any() and all() were incorrectlyusing partial matching for their na.rm argument.o kmeans() now ensures that the initial cluster centers it choosesare distinct.o text()'s default method could segfault if passed 0-length coordinates.o R CMD INSTALL (Unix) was sometimes leaving a temporary dirbehind. (PR#7230)o read.table() could fail when the row.names were looking like numbers.o seq(length= <n>) now always returns "integer" storage.o labels.lm was broken. (PR#7417)o The hashing used for character vectors in object.size() wasinefficient for vectors with thousands of identical values notsharing the same storage (an unusual case).o data.matrix() now warns if applied to a data frame withclassed columns.o Plotting histograms where the expression used to deparse tomultiple lines now gives a sensible default title. (PR#7421)o The print method for getDLLRegisteredRoutines() was badlydesigned, and failed for all the standard packages' DLLs.o getDLLRegisteredRoutines.character() was broken.o write.table(x, row.names=FALSE) was incorrect for a 0-column x.o write.table() assumed dec = "," if it was not ".".o morley.tab used by R-intro was not installed on Unix since 2.0.0(it was on Windows).o gsub(perl=TRUE) returned a string which printed with trailinggarbage if there was a match at the beginning whosereplacement was shorter. (PR#7479)Similarly, the result was truncated if a replacement at thebeginning was longer.o Some PDF readers do not define PDFDocEncoding, so pdf()'sISOLatin1 encoding is now derived from WinAnsi rather thanPDFDocEncoding.o xfig() had not been updated for the 2.0.0 alpha changes.Using more than one plot with a non-white background and withonefile=FALSE could segfault.o sprintf() did not check for buffer overflow on characterstrings. (PR#7554)o The error message when evaluation depth was exceeded itselfcaused an error in deparsing and so was not shown.o The 'datalist' file was not being used during installation(2.0.1 only).o replications() was wrongly reporting lack of balance indesigns with interactions (and had since unique() gained amatrix method).CHANGES IN R VERSION 2.0.1NEW FEATURESo Platform equivalence in library() is tested by a new functiontestPlatformEquivalence() which ignores the 'vendor' field andcan be customized by cognescenti.o The assignment form of split() allows recycling of vectorswithin the value list. In particular, things likesplit(x, g) <- lapply(split(x, g), mean)now workDOCUMENTATIONo Manual `Writing R Extensions' has new sections on writingportable packages and on writing new front-ends for R -- thelatter will be more comprehensive in R 2.1.0 which has newpublic header files.DEPRECATED & DEFUNCTo 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 nowformally deprecated.INSTALLATION CHANGESo 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 onlyinvoked for compilation steps).o -D__NO_MATH_INLINES is only used on older ix86 glibc-basedsystems which need it (tested at configure time). This leads tosmall improvements in speed and accuracy on modern systems.o If makeinfo >= 4.5 is not available, warnings are given thatsome of the HTML manuals will be missing, and the index pagegiven by help.start() will link to CRAN versions of those manuals.o Files aclocal.m4 and acinclude.m4 used in maintainer buildsare not longer included in the distribution.C-LEVEL FACILITIESo It was not clear in 'Writing R Extensions' that some of theentry points in the 'Utilities' section were not declared in<R.h> (they were in <R_ext/Applic.h>). Now all the entrypoints in that section are declared in <R_ext/Utils.h>,included by <R.h>.BUG FIXESo The grid.grab() function in package grid would throw an errorif there were no viewports pushed (now returns NULL).o model.frame.default() takes row names from the responsevariable if that has suitable names and there is no 'data'argument. (This follows S but was not previously implementedin R.)o write.table() was not respecting the 'dec' argument for complexnumbers.o write.table() printed a mixture of numeric and complex numbersas all complex. (PR#7260)o R CMD INSTALL failed with versioned installs on packages whichsave images (only).o dlogis() gave NaN not 0 for large negative arguments.o Importing from another namespace was broken for versionedinstalls, 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 rarecircumstances clipping needed to be cleared before starting anew page. (PR#7270, which has been the case since the deviceswere introduced in 1.1.0.)o First lattice plot (first grid.newpage() call) did not starta new page IF there had been a previous traditional graphicsplot (on the same device).o Using install.packages() to install the same package to morethan one library gave an incorrect warning message. (If therewere two or more such packages it might give an error.)o .packages(all.available=TRUE) returned packages with an invalidversion field in their DESCRIPTION whereas .find.packages() andpackageDescription() did not. Now all do not.o packageDescription() now correctly reports that a package doesnot exist, rather than that its DESCRIPTION file is 'missingor broken'.o 'make dist' from builddir != sourcedir was copying not linkingrecommended packages to *.tgz.o Slots in prototype objects can inherit from locally definedclasses (which were not being found correctly before).o Several fixes to the behavior of as() when there are eithercoerce= or replace= methods supplied in a call tosetIs(). Related fixes to setIs() to handle correctly previousmethods, 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 byomiting 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 anon-fatal error and does not abort R.o binom.test() did not deparse its arguments early enough suchthat the reported data were ugly if x was a table.o Systems based on glibc, including those using R's substitute forstrptime, were handling strptime("2001", "%Y") incorrectly, insome cases crashing. R's substitute code has been corrected(but problems may remain if glibc is used). See the ?strptimefor 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 theknots and levels as the actual values. Both print() andsummary() 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 araw vector.o is.atomic() gave incorrect result (false) for a raw vector.o rank() and order() accepted raw and list inputs, but did notgive a sensible answer (always 1:n). Similarly, partial sortsof a raw vector were accepted but did nothing.o require() without a version argument tried for an unversionedload of a package even though a versioned install was alreadyloaded. This often led to a message that a required packagewas being loaded when it was not actually being loaded.o str(<S4.object>) 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 answerson "lm" fits with na.action = na.exclude (and perhaps otherna.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 aninvalid object and so cause a segfault. (PR#7326)o download/install.packages() would misbehave if there was morethan 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 nowerrors.o The ave() function had trouble if the grouping containedunused levels.o read.fwf() got confused by skip > 0 and could infinite loopunder 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 inthe "methods" package and so could not be used in S4 classes.o Function getGroupMembers(), part of the definition of S4classes, had been promised for release 2.0, but slipped through.o toLatex(sessionInfo()) produced incorrect LaTeX on someplatforms due to special characters in the platformidentifier.********************************************************** ** News of 1.x.y and 2.0.0 is in file `ONEWS' ** News of 1.0.0 and earlier is in file `OONEWS' ** **********************************************************