Rev 74147 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
Dear Emacs, please make this -*-Text-*- mode!This file covers NEWS for R 2.x.y.See 'NEWS' (or doc/html/NEWS.html or doc/NEWS.Rd) forsubsequent changes and NEWS.0 and NEWS.1 for earlier ones.There is a change in format at 2.10.0: entries fromthen on are generated from doc/NEWS.2.Rd.CHANGES IN R VERSION 2.15.3:NEW FEATURES:• lgamma(x) for very small x (in the denormalized range) is nolonger Inf with a warning.• image() now sorts an unsorted breaks vector, with a warning.• The internal methods for tar() and untar() do a slightly moregeneral job for ‘ustar’-style handling of paths of more than 100bytes.• Packages compiler and parallel have been added to the referenceindex (refman.pdf).• untar(tar = "internal") has some support for pax headers asproduced by e.g. gnutar --posix (which seems prevalent onOpenSUSE 12.2) or bsdtar --format pax, including long path andlink names.• sQuote() and dQuote() now handle 0-length inputs. (Suggestion ofBen Bolker.)• summaryRprof() returns zero-row data frames rather than throw anerror if no events are recorded, for consistency.• The included version of PCRE has been updated to 8.32.• The tcltk namespace can now be re-loaded after unloading.The Tcl/Tk event loop is inhibited in a forked child from packageparallel (as in e.g. mclapply()).• parallel::makeCluster() recognizes the value random for theenvironment variable R_PARALLEL_PORT: this chooses a random valuefor the port and reduces the chance of conflicts when multipleusers start a cluster at the same time.UTILITIES:• The default for TAR on Windows for R CMD build has been changedto be internal if no tar command is on the path.This enables most packages to be built ‘out of the box’ withoutRtools: the main exceptions are those which need to be installedto re-build vignettes and need Rtools for installation (usuallybecause they contain compiled code).C-LEVEL FACILITIES:• On a 64-bit Windows platform with enough RAM, R_alloc can nowallocate up to just under 32GB like other 64-bit platforms.DEPRECATED AND DEFUNCT:• Use of col2rgb(0) is deprecated (see the help page for itslimitations).• The deprecated intensities component returned by hist() is nolonger recognized by the plot() method and will be removed in R3.0.0.• real(), as.real() and is.real() are now formally deprecated andgive a warning.• This is formal notice that the non-API EISPACK entry points in Rwill be removed shortly.INSTALLATION:• The configure tests for Objective C and Objective C++ now work onMac OS 10.8 with Xcode 4.5.2 (PR#15107).• The cairo-based versions of X11() now work with current versionsof cairographics (e.g. 1.12.10). (PR#15168)A workaround for earlier versions of R is to use X11.options(type= "nbcairo").• Configuration and R CMD javareconf now come up with a smaller setof library paths for Java on Oracle-format JDK (includingOpenJDK). This helps avoid conflicts between libraries (such aslibjpeg) supplied in the JDK and system libraries. This canalways be overridden if needed: see the ‘R Installation andAdministration’ manual.BUG FIXES:• beta(a, b) could overflow to infinity in its calculations whenone of a and b was less than one. (PR#15075)• lbeta(a, b) no longer gives NaN if a or b is very small (in thedenormalized range).• bquote() is now able to substitute default arguments insingle-argument functions. (PR#15077)• browseEnv(html = FALSE) would segfault if called from R (notR.app) on a CRAN-style Mac OS X build of R.• [[<- for lists (generic vectors) needed to increment NAMED countwhen RHS is used more than once. (PR#15098)• On Windows, warnings about opening a file or pipe with anon-ASCII description were sometimes output in UTF-8 rather thanin the current locale's character set.• The call() function did not duplicate its arguments. (PR#15115)• TukeyHSD() could give NA results with some na.action methods suchas na.exclude(). (Hinted at on R-help by John Fox.)• The deprecated svd(X, LINPACK = TRUE) could alter X in R2.15.[12]. (Reported by Bill Dunlap.)• Under Windows, file.link() and file.symlink() used the link nametwice, so would always fail. (Reported by Rui Barradas/OliverSoong).• summaryRprof(memory = "both") mixed up the units of Vcells andNcells: it now works in bytes. (PR#15138)• tools::Rd2HTML() would sometimes delete text. (PR#15134)• plot() failed for "table" objects containing just one entry.(PR#15118)• embedFonts() needed to quote some filepaths. (PR#15149)• parallel::mccollect() handled NULL returns incorrectly (removingthe element rather than setting it to NULL).• The full reference index (fullrefman.pdf) was missing packagescompiler and parallel.• The report for optim(method = "L-BFGS-B", control = list(trace =1)) reported the last completed and not the current iteration,unlike other methods and trace levels. (PR#15103)• qt(1e-12, 1.2) no longer gives NaN.• dt(1e160, 1.2, log=TRUE) no longer gives -Inf.• On Windows the untar() function now quotes the directory namewhen using an external tar utility, so R CMD check will handlepathnames containing spaces.• The version for Windows 8 and Windows Server 2012 is nowdisplayed by win.version(). (Reported by Gabor Grothendieck.)• The custom Windows installer target myR in the installer Makefiledid not work in 2.15.2. (Reported by Erich Neuwirth.)• aperm(matrix(1:6, 2, dimnames=list(A={}, B={})), "A") no longersegfaults.• Expressions involving user defined operators were not alwaysdeparsed faithfully. (PR#15179)• The enc2utf8() function converted NA_character_ to "NA" innon-UTF-8 locales. (PR#15201)• The exclude argument to xtabs() was ignored for "factor"arguments.• On Windows, work around an event-timing problem when the RGuiconsole was closed from the ‘X’ control and the closurecancelled. (This would on some 64-bit systems crash R, typicallythose with a slow GPU relative to the CPU.)• On unix Rscript will pass the r_arch setting it was compiled withon to the R process so that the architecture of Rscript and thatof R will match unless overridden.• On Windows, basename(), dirname() and file.choose() have moresupport for long non-ASCII file names with 260 or more bytes whenexpressed in UTF-8.CHANGES IN R VERSION 2.15.2:NEW FEATURES:• The X11() window gains an icon: the latter may be especiallyuseful on Ubuntu's ‘Unity’ interface.The WM_CLASS should be set in circumstances where the WindowManager failed to make use of X11 resource settings.(Contributed by Philip Johnson.)• The "Date" and "POSIXt" methods for cut() will accept an unsortedbreaks argument (as the default method does, although this wasundocumented). (Wish of PR#14961.)• Reference class methods (in the methods package) that use othermethods in an indirect way (e.g., by sapply()) must tell the codeanalysis to include that method. They can now do so by invoking$usingMethods().• More Polish translations are available: for the RGui menus andfor several recommended packages.• Multistratum MANOVA works. In fact, it seems to have done so foryears in spite of the help page claiming it did not.• qqline() has new optional arguments distribution, probs andqtype, following the example of lattice's panel.qqmathline().• The handling of single quotes in the en@quot pseudo-language hasbeen slightly improved. Double quotes are no longer converted.• New functions checkPoFiles() and checkPoFile() have been added tothe tools package to check for consistency of format strings intranslation files.• model.matrix(~1, ...) now also contains the same rownames thatless trivial formulae produce. (Wish of PR#14992, changes theoutput of several packages.)• Misuse of rep() on undocumented types of objects (e.g. calls) isnow reported as an error.• The included LAPACK has been updated to 3.4.1, with some patchesfrom the current SVN sources. (_Inter alia_, this resolvesPR#14692.)• file.copy(recursive = TRUE) has some additional checks on usererror leading to attempted infinite recursion (and on someplatforms to crashing R).• PCRE has been updated to version 8.31, a bug-fix release.• The included version of liblzma has been updated to version5.0.4, a minor bug-fix release.• New function .bincode(), a ‘bare-bones’ version ofcut.default(labels = FALSE) for use in packages with image()methods.• The HTML manuals now use directional single quotes.• maintainer() now converts embedded new lines to spaces. It nolonger gives a non-obvious error for non-installed packages.• The X11() device has some protection against being used withforked processes _via_ package parallel.• Setting the environment variable R_OSX_VALGRIND (to any value)allows R to be run under valgrind on Mac OS 10.6 and 10.7(valgrind currently has very limited support for 10.8), providedsystem() is not used (directly or indirectly). This should notbe needed for valgrind >= 3.8.1.• The model.frame() method for "lm" uses xlevels: this is safer ifdata was supplied or model = FALSE was used and the levels offactors used in the fit had been re-ordered since fitting.Similarly, model.frame(fm, data=<data>) copies across thevariables used for safe prediction from the fit.• Functions such as parLapply() in package parallel can make use ofa default cluster if one is set. (Reported by Martin Morgan.)• chol(pivot = TRUE, LINPACK = FALSE) is now available using LAPACK3.2 subroutine DPSTRF.• The functions .C(), .Call(), .External() and .Fortran() now checkthat they are called with an unnamed first argument: the formalarguments were changed from name= to .NAME= in R 2.13.0, but somepackages were still using the old name. This is currently awarning, but will be an error in future.• step() no longer tries to improve a model with AIC of -Inf (aperfect fit).• spline() and splinefun() gain a new method "hyman", animplementation of Hyman's method of constructing monotonicinterpolation splines. (Based on contributions of Simon Wood andRob Hyndman.)• On Windows, the C stack size has been increased to 64MB (it hasbeen 10MB since the days of 32MB RAM systems).PERFORMANCE IMPROVEMENTS:• array() is now implemented in C code (for speed) when data isatomic or an unclassed list (so it is known that as.vector(data)will have no class to be used by rep()).• rep() is faster and uses less memory, substantially so in somecommon cases (e.g. if times is of length one or length.out isgiven, and each = 1).• findInterval(), tabulate(), cut(), hist() and image.default() alluse .Call() and are more efficient.• duplicated(), unique() and similar now support vectors of lengthsabove 2^29 on 64-bit platforms.• Omitting PACKAGE in .C() etc calls was supposed to make use ofthe DLL from the namespace within which the enclosing functionwas defined. It was less successful in doing so than it mightbe, and gave no indication it had failed.A new search strategy is very successful and gives a warning whenit fails. In most cases this is because the entry point is notactually provided by that package (and so PACKAGE should be usedto indicate which package is intended) but in some the namespacedoes not have a DLL specified by a useDynLib() directive soPACKAGE is required.UTILITIES:• R CMD check now checks if a package can be loaded bylibrary(pkgname, lib.loc = "somewhere") without being on thelibrary search path (unless it is already installed in .Library,when it always will be).• R CMD check --as-cran notes ‘hidden’ files and directories (withnames starting with a dot) that are not needed for the operationof R CMD INSTALL or R CMD build: such files should be excludedfrom the published tarball.• R CMD check (if checking subdirectories) checks that the R codein any demos is ASCII and can be parsed, and warns if not.• When R CMD Rd2pdf is used with inputenx.sty, it allows furthercharacters (mainly for Eastern European languages) by includingix-utf8enc.dfu (if available). (Wish of PR#14989.)• R CMD build now omits several types of hidden files/directories,including inst/doc/.Rinstignore, vignettes/.Rinstignore,(.Rinstignore should be at top level), .deps under src,.Renviron, .Rprofile, .Rproj.user, .backups, .cvsignore,.cproject, .directory, .dropbox, .exrc, .gdb.history,.gitattributes, .gitignore, .gitmodules, .hgignore, .hgtags,.htaccess, .latex2html-init, .project, .seed, .settings,.tm_properties and various leftovers.• R CMD check now checks for .C(), .Call(), .External() and.Fortran() calls in other packages, and gives a warning on thosefound from R itself (which are not part of the API and changewithout notice: many will be changed for R 3.0.0).C-LEVEL FACILITIES:• The limit for R_alloc on 64-bit platforms has been raised to justunder 32GB (from just under 16GB).• The misuse of .C("name", ..., PACKAGE = foo) where foo is anarbitrary R object is now an error.The misuse .C("name",..., PACKAGE = "") is now warned about in RCMD check, and will be an error in future.DEPRECATED AND DEFUNCT:• Use of array() with a 0-length dim argument is deprecated with awarning (and was contrary to the documentation).• Use of tapply() with a 0-length INDEX list is deprecated with awarning.• Translation packages are deprecated.• Calling rep() or rep.int() on a pairlist is deprecated and willgive a warning. In any case, rep() converted a pairlist to alist so you may as well do that explicitly.• Entry point rcont2 is no longer part of the API, and will move topackage stats in R 3.0.0.• The ‘internal’ graphics device invoked by.Call("R_GD_nullDevice", package = "grDevices") is about to beremoved: use pdf(file = NULL) instead.• eigen(EISPACK = TRUE), chol(pivot = FALSE, LINPACK = TRUE),chol2inv(LINPACK = TRUE), solve(LINPACK = TRUE) and svd(LINPACK =TRUE) are deprecated and give a warning.They were provided for compatibility with R 1.7.0 (Mar 2003)!• The ‘internal function’ kappa.tri() has been renamed to.kappa_tri() so it is not inadvertently called as a method forclass "tri".• Functions sessionData() and browseAll() in package methods are ona help page describing them as ‘deprecated’ and are now formallydeprecated.PACKAGE INSTALLATION:• For a Windows or Mac OS X binary package install,install.packages() will check if a source package is available onthe same repositories, and report if it is a later version orthere is a source package but no binary package available.This check can be suppressed: see the help page.• install.packages(type = "both") has been enhanced. Ininteractive use it will ask whether to choose the source versionof a package if the binary version is older and contains compiledcode, and also asks if source packages with no binary versionshould be installed).INSTALLATION:• There is a new configure option --with-libtiff (mainly in casethe system installation needs to be avoided).• LAPACK 3.4.1 does use some Fortran 90 features, so g77 no longersuffices.• If an external LAPACK is used, it must be version 3.2 or later.BUG FIXES:• On Windows, starting Rterm via R.exe caused Ctrl-C to misbehave.(PR#14948)• The tools::latexToUtf8() function missed conversions that werecontained within braces.• Long timezone specifications (such as a file name preceded by :)could crash as.POSIXlt. (PR#14945)• R CMD build --resave-data could fail if there was no datadirectory but there was an R/sysdata.rda file. (PR#14947)• is.na() misbehaved on a 0-column data frame. (PR#14959)• anova.lmlist() failed if test was supplied. (PR#14960)It was unable to compute Cp tests for object of class "lm" (itassumed class "glm").• The formula method for sunflowerplot() now allows xlab and ylabto be set. (Reported by Gerrit Eichner.)• The "POSIXt" and "Date" methods for hist() could fail on Windowswhere adjustments to the right-hand boundary crossed a DSTtransition time.• On Windows, the code in as.POSIXct() to handle incorrectlyspecified isdst fields might have resulted in NA being returned.• aov() and manova() gave spurious warning about singular errormodel in the multiresponse case.• In ns() and bs(), specifying knots = NULL is now equivalent toomitting it, also when df is specified. (PR#14970)• sprintf() did not accept numbered arguments ending in zero.(PR#14975)• rWishart() could overflow the C stack and maybe crash the Rprocess for dimensions of several hundreds or more. (Reported byMichael Braun on R-sig-mac.)• Base package vignettes (e.g. vignette("Sweave")) were not fullyinstalled in builds of R from the tarball.• lchoose() and choose() could overflow the C stack and crash R.• When given a 0-byte file and asked to keep source references,parse() read input from stdin() instead.• pdf(compress = TRUE) did not delete temporary files it createduntil the end of the R session. (PR#14991)• logLik() did not detect the error of applying it to amultiple-response linear model. (PR#15000)• file.copy(recursive = TRUE) did not always report FALSE for afailure two or more directories deep.• qgeom() could return -1 for extremely small q. (PR#14967)• smooth.spline() used DUP = FALSE which allowed its compiled Ccode to change the function: this was masked by the defaultbyte-compilation. (PR#14965)• In Windows, the GUI preferences for foreground color were notalways respected. (Reported by Benjamin Wells.)• On OS X, the Quartz versions of the bitmap devices did notrespect antialias = "none". (PR#15006)• unique() and similar would infinite-loop if called on a vector oflength > 2^29 (but reported that the vector was too long for 2^30or more).• parallel::stopCluster() now works with MPI clusters without snowbeing on the search path.• terms.formula() could exhaust the stack, and the stack check didnot always catch this before the segfault. (PR#15013)• sort.list(method = "radix") could give incorrect results oncertain compilers (seen with clang on Mac OS 10.7 and Xcode4.4.1).• backsolve(T, b) gave incorrect results when nrows(b) > ncols(T)and b had more than one column.It could segfault or give nonsense if k was specified as morethan ncols(T).• smooth.spline() did not check that a specified numeric spar wasof length 1, and gave corrupt results if it was of length 0.• Protection added to do_system. (PR#15025)• Printing of vectors with names > 1000 characters now workscorrectly rather than truncating. (PR#15028)• qr() for a complex matrix did not pivot the column names.• --with-blas='-framework vecLib' now also works on OS X 10.8.• R CMD check no longer fails with an error if a DESCRIPTION fileincorrectly contains a blank line. (Reported by Bill Dunlap.)• install.packages(type = "both") could call chooseCRANmirror()twice.• lm.wfit() could segfault in R 2.15.1 if all the weights werezero. (PR#15044)• A malformed package name could cause R CMD INSTALL to writeoutside the target library.• Some of the quality control functions (e.g. tools::checkFF())were wrongly identifying the source of S4 methods in a packageand so not checking them.• The default type of display by browseEnv() when using R.app onMac OS X has been incorrect for a long time.• The implementation of importMethodsFrom in a NAMESPACE file couldbe confused and fail to find generics when importing frommultiple packages (reported and fixed by Michael Lawrence).• The detection of the C stack direction is better protectedagainst compiler optimization. (PR#15011)• Long custom line types would sometimes segfault on thecairographics-based devices. (PR#15055)• tools::checkPoFile() unprotected too early in its C code and sosegfaulted from time to time.• The Fortran code underlying nlminb() could infinite-loop if anyof the input functions returned NA or NaN. This is now an errorfor the gradient or Hessian, and a warning for the function (withthe value replaced by Inf). (In part, PR#15052.)• The code for creating coerce() methods could generate false notesabout ambiguous selection; the notes have been suppressed forthis function.• arima.sim() could give too long an output in some corner cases(in part, PR#15068).• anova.glm() with test = "Rao" didn't work when models included anoffset. (Reported by Søren Feodor Nielsen.)• as.data.frame.matrix() could return invalid data frame with norow.names attribute for 0-row matrix. (Reported by Hervé Pagès.)• Compilation with the vecLib or Accelerate frameworks on OS Xwithout using that also for LAPACK is more likely to besuccessful.CHANGES IN R VERSION 2.15.1:NEW FEATURES:• source() now uses withVisible() rather than.Internal(eval.with.vis). This sometimes alters tracebacksslightly.• install.packages("pkg_version.tgz") on Mac OS X now has sanitychecks that this is actually a binary package (as people havetried it with incorrectly named source packages).• splineDesign() and spline.des() in package splines have a newoption sparse which can be used for efficient construction of asparse B-spline design matrix (_via_ Matrix).• norm() now allows type = "2" (the ‘spectral’ or 2-norm) as well,mainly for didactical completeness.• pmin() and pmax()) now also work when one of the inputs is oflength zero and others are not, returning a zero-length vector,analogously to, say, +.• colorRamp() (and hence colorRampPalette()) now also works for theboundary case of just one color when the ramp is flat.• .C() gains some protection against the misuse of character vectorarguments. (An all too common error is to pass character(N),which initializes the elements to "", and then attempt to editthe strings in-place, sometimes forgetting to terminate them.)• Calls to the new function globalVariables() in package utilsdeclare that functions and other objects in a package should betreated as globally defined, so that CMD check will not notethem.• print(packageDescription(*)) trims the Collate field by default.• The included copy of zlib has been updated to version 1.2.7.• A new option "show.error.locations" has been added. When set toTRUE, error messages will contain the location of the most recentcall containing source reference information. (Other values aresupported as well; see ?options.)• The NA warning messages from e.g. pchisq() now report the call tothe closure and not that of the .Internal.• Added Polish translations by Łukasz Daniel.PERFORMANCE IMPROVEMENTS:• In package parallel, makeForkCluster() and the multicore-basedfunctions use native byte-order for serialization (deferred from2.15.0).• lm.fit(), lm.wfit(), glm.fit() and lsfit() do less copying ofobjects, mainly by using .Call() rather than .Fortran().• .C() and .Fortran() do less copying: arguments which are raw,logical, integer, real or complex vectors and are unnamed are notcopied before the call, and (named or not) are not copied afterthe call. Lists are no longer copied (they are supposed to beused read-only in the C code).• tabulate() makes use of .C(DUP = FALSE) and hence does not copybin. (Suggested by Tim Hesterberg.) It also avoids making acopy of a factor argument bin.• Other functions (often or always) doing less copying includecut(), dist(), the complex case of eigen(), hclust(), image(),kmeans(), loess(), stl() and svd(LINPACK = TRUE).• There is less copying when using primitive replacement functionssuch as names(), attr() and attributes().DEPRECATED AND DEFUNCT:• The converters for use with .C() (see ?getCConverterDescriptions)are deprecated: use the .Call() interface instead. There are noknown examples (they were never fully documented).UTILITIES:• For R CMD check, a few people have reported problems withjunctions on Windows (although they were tested on Windows 7, XPand Server 2008 machines and it is unknown under whatcircumstances the problems occur). Setting the environmentvariable R_WIN_NO_JUNCTIONS to a non-empty value (e.g. in~/.R/check.Renviron) will force copies to be used instead.INSTALLATION:• R CMD INSTALL with _R_CHECK_INSTALL_DEPENDS_ set to a true value(as done by R CMD check --as-cran) now restricts the packagesavailable when lazy-loading as well as when test-loading (sincepackages such as ETLUtils and agsemisc had top-level calls tolibrary() for undeclared packages).This check is now also available on Windows.C-LEVEL FACILITIES:• C entry points mkChar and mkCharCE now check that the length ofthe string they are passed does not exceed 2^31-1 bytes: theyused to overflow with unpredictable consequences.• C entry points R_GetCurrentSrcref and R_GetSrcFilename have beenadded to the API to allow debuggers access to the sourcereferences on the stack.WINDOWS-SPECIFIC CHANGES:• Windows-specific changes will now be announced in this file(NEWS). Changes up and including R 2.15.0 remain in the CHANGESfile.• There are two new environment variables which control thedefaults for command-line options.If R_WIN_INTERNET2 is set to a non-empty value, it is as if--internet2 was used.If R_MAX_MEM_SIZE is set, it gives the default memory limit if--max-mem-size is not specified: invalid values being ignored.BUG FIXES:• lsfit() lost the names from the residuals.• More cases in which merge() could create a data frame withduplicate column names now give warnings. Cases where namesspecified in by match multiple columns are errors.• Nonsense uses such as seq(1:50, by = 5) (from package plotrix)and seq.int(1:50, by = 5) are now errors.• The residuals in the 5-number summary printed by summary() on an"lm" object are now explicitly labelled as weighted residualswhen non-constant weights are present. (Wish of PR#14840.)• tracemem() reported that all objects were copied by .C() or.Fortran() whereas only some object types were ever copied.It also reported and marked as copies _some_ transformations suchas rexp(n, x): it no longer does so.• The plot() method for class "stepfun" only used the optional xvalargument to compute xlim and not the points at which to plot (asdocumented). (PR#14864)• Names containing characters which need to be escaped were notdeparsed properly. (PR#14846)• Trying to update (recommended) packages in R_HOME/library withoutwrite access is now dealt with more gracefully. Further, suchpackage updates may be skipped (with a warning), when a newerinstalled version is already going to be used from .libPaths().(PR#14866)• hclust() is now fast again (as up to end of 2003), with adifferent fix for the "median"/"centroid" problem. (PR#4195).• get_all_vars() failed when the data came entirely from vectors inthe global environment. (PR#14847)• R CMD check with _R_CHECK_NO_RECOMMENDED_ set to a true value (asdone by the --as-cran option) could issue false errors if therewas an indirect dependency on a recommended package.• formatC() uses the C entry point str_signif which could writebeyond the length allocated for the output string.• Missing default argument added to implicit S4 generic forbacksolve(). (PR#14883)• Some bugs have been fixed in handling load actions that couldfail to export assigned items or generate spurious warnings inCMD check on loading.• For tiff(type = "windows"), the numbering of per-page filesexcept the last was off by one.• On Windows, loading package stats (which is done for a defaultsession) would switch line endings on stdout and stderr from CRLFto LF. This affected Rterm and R CMD BATCH.• On Windows, the compatibility function x11() had not kept up withchanges to windows(), and issued warnings about bad parameters.(PR#14880)• On Windows, the Sys.glob() function did not handle UNC paths asit was designed to try to do. (PR#14884)• In package parallel, clusterApply() and similar failed to handlea (pretty pointless) length-1 argument. (PR#14898)• Quartz Cocoa display reacted asynchronously to dev.flush() whichmeans that the redraw could be performed after the plot has beenalready modified by subsequent code. The redraw is now donesynchronously in dev.flush() to allow animations without sleepcycles.• Source locations reported in traceback() were incorrect whenbyte-compiled code was on the stack.• plogis(x, lower = FALSE, log.p = TRUE) no longer underflows earlyfor large x (e.g. 800).• ?Arithmetic's “1 ^ y and y ^ 0 are 1, _always_” now also appliesfor integer vectors y.• X11-based pixmap devices like png(type = "Xlib") were trying toset the cursor style, which triggered some warnings and hangs.• Code executed by the built-in HTTP server no longer allows otherHTTP clients to re-enter R until the current worker evaluationfinishes, to prevent cascades.• The plot() and Axis() methods for class "table" now respectgraphical parameters such as cex.axis. (Reported by MartinBecker.)• Under some circumstances package.skeleton() would give outprogress reports that could not be translated and so weredisplayed by question marks. Now they are always in English.(This was seen for CJK locales on Windows, but may have occurredelsewhere.)• The evaluator now keeps track of source references outside offunctions, e.g. when source() executes a script.• The replacement method for window() now works correctly formultiple time series of class "mts". (PR#14925)• is.unsorted() gave incorrect results on non-atomic objects suchas data frames. (Reported by Matthew Dowle.)• The value returned by tools::psnice() for invalid pid values wasnot always NA as documented.• Closing an X11() window while locator() was active could abortthe R process.• getMethod(f, sig) produced an incorrect error message in somecases when f was not a string).• Using a string as a “call” in an error condition withoptions(showErrorCalls=TRUE) could cause a segfault. (PR#14931)• The string "infinity" allowed by C99 was not accepted as anumerical string value by e.g. scan() and as.numeric().(PR#14933)• In legend(), setting some entries of lwd to NA was inconsistent(depending on the graphics device) in whether it would suppressthose lines; now it consistently does so. (PR#14926)• by() failed for a zero-row data frame. (Reported by WeiqiangQian.)• The Yates' correction in chisq.test() could be bigger than theterms it corrected, previously leading to an infinite teststatistic in some corner cases which are now reported as NaN.• xgettext() and related functions sometimes returned items thatwere not strings for translation. (PR#14935)• plot(<lm>, which=5) now correctly labels the factor levelcombinations for the special case where all h[i,i] are the same.(PR#14837)• Sys.glob() caused a segfault if the first element of path wasNA_character. (PR#14990)CHANGES IN R VERSION 2.15.0:SIGNIFICANT USER-VISIBLE CHANGES:• The behaviour of unlink(recursive = TRUE) for a symbolic link toa directory has changed: it now removes the link rather than thedirectory contents (just as rm -r does).On Windows it no longer follows reparse points (includingjunctions and symbolic links).NEW FEATURES:• Environment variable RD2DVI_INPUTENC has been renamed toRD2PDF_INPUTENC.• .Deprecated() becomes a bit more flexible, getting an oldargument.• Even data-only packages without R code need a namespace and somay need to be installed under R 2.14.0 or later.• assignInNamespace() has further restrictions on use apart from attop-level, as its help page has warned. Expect it to be disabledfrom programmatic use in the future.• system() and system2() when capturing output report a non-zerostatus in the new "status" attribute.• kronecker() now has an S4 generic in package methods on whichpackages can set methods. It will be invoked by X %x% Y ifeither X or Y is an S4 object.• pdf() accepts forms like file = "|lpr" in the same way aspostscript().• pdf() accepts file = NULL. This means that the device does NOTcreate a PDF file (but it can still be queried, e.g., for fontmetric info).• format() (and hence print()) on "bibentry" objects now usesoptions("width") to set the output width.• legend() gains a text.font argument. (Suggested by Tim Paine,PR#14719.)• nchar() and nzchar() no longer accept factors (as integervectors). (Wish of PR#6899.)• summary() behaves slightly differently (or more precisely, itsprint() method does). For numeric inputs, the number of NAs isprinted as an integer and not a real. For dates and datetimes,the number of NAs is included in the printed output (the latterbeing the wish of PR#14720).The "data.frame" method is more consistent with the defaultmethod: in particular it now applies zapsmall() tonumeric/complex summaries.• The number of items retained with options(warn = 0) can be set byoptions(nwarnings=).• There is a new function assignInMyNamespace() which uses thenamespace of the function it is called from.• attach() allows the default name for an attached file to beoverridden.• bxp(), the work horse of boxplot(), now uses a more sensibledefault xlim in the case where at is specified differently from1:n, see the discussion on R-devel, <URL:https://stat.ethz.ch/pipermail/r-devel/2011-November/062586.html>.• New function paste0(), an efficient version of paste(*, sep=""),to be used in many places for more concise (and slightly moreefficient) code.• Function setClass() in package methods now returns, invisibly, agenerator function for the new class, slightly preferred tocalling new(), as explained on the setClass help page.• The "dendrogram" method of str() now takes its default forlast.str from option str.dendrogram.last.• New simple fitted() method for "kmeans" objects.• The traceback() function can now be called with an integerargument, to display a current stack trace. (Wish of PR#14770.)• setGeneric() calls can be simplified when creating a new genericfunction by supplying the default method as the def argument.See ?setGeneric.• serialize() has a new option xdr = FALSE which will use thenative byte-order for binary serializations. In scenarios whereonly little-endian machines are involved (these days, close touniversal) and (un)serialization takes an appreciable amount oftime this may speed up noticeably transferring data betweensystems.• The internal (un)serialization code is faster for long vectors,particularly with XDR on some platforms. (Based on a suggestedpatch by Michael Spiegel.)• For consistency, circles with zero radius are omitted by points()and grid.circle(). Previously this was device-dependent, butthey were usually invisible.• NROW(x) and NCOL(x) now work whenever dim(x) looks appropriate,e.g., also for more generalized matrices.• PCRE has been updated to version 8.30.• The internal R_Srcref variable is now updated before the browserstops on entering a function. (Suggestion of PR#14818.)• There are ‘bare-bones’ functions .colSums(), .rowSums(),.colMeans() and .rowMeans() for use in programming where ultimatespeed is required.• The formerly internal function .package_dependencies() frompackage tools for calculating (recursive) (reverse) dependencieson package databases has been renamed to package_dependencies()and is now exported.• There is a new function optimHess() to compute the (approximate)Hessian for an optim() solution if hessian = TRUE was forgotten.• .filled.contour() is a ‘bare-bones’ function to add afilled-contour rectangular plot to an already prepared plotregion.• The stepping in debugging and single-step browsing modes haschanged slightly: now left braces at the start of the body arestepped over for if statements as well as for for and whilestatements. (Wish of PR#14814.)• library() no longer warns about a conflict with a function frompackage:base if the function has the same code as the base onebut with a different environment. (An example is Matrix::det().)• When deparsing very large language objects, as.character() nowinserts newlines after each line of approximately 500 bytes,rather than truncating to the first line.• New function rWishart() generates Wishart-distributed randommatrices.• Packages may now specify actions to be taken when the package isloaded (setLoadActions()).• options(max.print = Inf) and similar now give an error (insteadof warnings later).• The "difftime" replacement method of units tries harder topreserve other attributes of the argument. (Wish of PR#14839.)• poly(raw = TRUE) no longer requires more unique points than thedegree. (Requested by John Fox.)PACKAGE parallel:• There is a new function mcmapply(), a parallel version ofmapply(), and a wrapper mcMap(), a parallel version of Map().• A default cluster can be registered by the new functionsetDefaultCluster(): this will be used by default in functionssuch as parLapply().• clusterMap() has a new argument .scheduling to allow the use ofload-balancing.• There are new load-balancing functions parLapplyLB() andparSapplyLB().• makePSOCKCluster() has a new option useXDR = FALSE which can beused to avoid byte-shuffling for serialization when all the nodesare known to be little-endian (or all big-endian).PACKAGE INSTALLATION:• Non-ASCII vignettes without a declared encoding are no longeraccepted.• C/C++ code in packages is now compiled with -NDEBUG to mitigateagainst the C/C++ function assert being called in production use.Developers can turn this off during package development withPKG_CPPFLAGS = -UNDEBUG.• R CMD INSTALL has a new option --dsym which on Mac OS X (Darwin)dumps the symbols alongside the .so file: this is helpful whendebugging with valgrind (and especially when installing packagesinto R.framework). [This can also be enabled by setting theundocumented environment variable PKG_MAKE_DSYM, since R 2.12.0.]• R CMD INSTALL will test loading under all installedsub-architectures even for packages without compiled code, unlessthe flag --no-multiarch is used. (Pure R packages can do thingswhich are architecture-dependent: in the case which promptedthis, looking for an icon in a Windows R executable.)• There is a new option install.packages(type = "both") which triessource packages if binary packages are not available, on thoseplatforms where the latter is the default.• The meaning of install.packages(dependencies = TRUE) has changed:it now means to install the essential dependencies of the namedpackages plus the Suggests, but only the essential dependenciesof dependencies. To get the previous behaviour, specifydependencies as a character vector.• R CMD INSTALL --merge-multiarch is now supported on OS X andother Unix-alikes using multiple sub-architectures.• R CMD INSTALL --libs-only now by default does a test load onUnix-alikes as well as on Windows: suppress with --no-test-load.UTILITIES:• R CMD check now gives a warning rather than a note if it findsinefficiently compressed datasets. With bzip2 and xz compressionhaving been available since R 2.10.0, it only exceptionally makessense to not use them.The environment variable _R_CHECK_COMPACT_DATA2_ is no longerconsulted: the check is always done if _R_CHECK_COMPACT_DATA_ hasa true value (its default).• Where multiple sub-architectures are to be tested, R CMD checknow runs the examples and tests for all the sub-architectureseven if one fails.• R CMD check can optionally report timings on various parts of thecheck: this is controlled by environment variable_R_CHECK_TIMINGS_ documented in ‘Writing R Extensions’. Timings(in the style of R CMD BATCH) are given at the foot of the outputfiles from running each test and the R code in each vignette.• There are new options for more rigorous testing by R CMD checkselected by environment variables - see the ‘Writing RExtensions’ manual.• R CMD check now warns (rather than notes) on undeclared use ofother packages in examples and tests: increasingly people areusing the metadata in the DESCRIPTION file to compute informationabout packages, for example reverse dependencies.• The defaults for some of the options in R CMD check (described inthe ‘R Internals’ manual) have changed: checks for unsafe and.Internal() calls and for partial matching of arguments in Rfunction calls are now done by default.• R CMD check has more comprehensive facilities for checkingcompiled code and so gives fewer reports on entry points linkedinto .so/.dll files from libraries (including C++ and Fortranruntimes).Checking compiled code is now done on FreeBSD (as well as theexisting supported platforms of Linux, Mac OS X, Solaris andWindows).• R CMD build has more options for --compact-vignettes: see R CMDbuild --help.• R CMD build has a new option --md5 to add an MD5 file (as done byCRAN): this is used by R CMD INSTALL to check the integrity ofthe distribution.If this option is not specified, any existing (and probablystale) MD5 file is removed.DEPRECATED AND DEFUNCT:• R CMD Rd2dvi is now defunct: use R CMD Rd2pdf.• Options such --max-nsize, --max-vsize and the functionmem.limits() are now defunct. (Options --min-nsize and--min-vsize remain available.)• Use of library.dynam() without specifying all the first threearguments is now disallowed.Use of an argument chname in library.dynam() including theextension .so or .dll (which was never allowed according to thehelp page) is defunct. This also applies tolibrary.dynam.unload() and to useDynLib directives in NAMESPACEfiles.• The internal functions .readRDS() and .saveRDS() are now defunct.• The off-line help() types "postscript" and "ps" are defunct.• Sys.putenv(), replaced and deprecated in R 2.5.0, is finallyremoved.• Some functions/objects which have been defunct for five or moreyears have been removed completely. These include .Alias(),La.chol(), La.chol2inv(), La.eigen(), Machine(), Platform(),Version, codes(), delay(), format.char(), getenv(), httpclient(),loadURL(), machine(), parse.dcf(), printNoClass(), provide(),read.table.url(), restart(), scan.url(), symbol.C(), symbol.For()and unix().• The ENCODING argument to .C() is deprecated. It was intended tosmooth the transition to multi-byte character strings, but can bereplaced by the use of iconv() in the rare cases where it isstill needed.INSTALLATION:• Building with a positive value of --with-valgrind-instrumentationnow also instruments logical, complex and raw vectors.C-LEVEL FACILITIES:• Passing R objects other than atomic vectors, functions, lists andenvironments to .C() is now deprecated and will give a warning.Most cases (especially NULL) are actually coding errors. NULLwill be disallowed in future..C() now passes a pairlist as a SEXP to the compiled code. Thisis as was documented, but pairlists were in reality handleddifferently as a legacy from the early days of R.• call_R and call_S are deprecated. They still exist in theheaders and as entry points, but are no longer documented andshould not be used for new code.BUG FIXES:• str(x, width) now obeys its width argument also for functionheaders and other objects x where deparse() is applied.• The convention for x %/% 0L for integer-mode x has been changedfrom 0L to NA_integer_. (PR#14754)• The exportMethods directive in a NAMESPACE file now exports S4generics as necessary, as the extensions manual said it does.The manual has also been updated to be a little more informativeon this point.It is now required that there is an S4 generic (imported orcreated in the package) when methods are to be exported.• Reference methods cannot safely use non-exported entries in thenamespace. We now do not do so, and warn in the documentation.• The namespace import code was warning when identical S4 genericfunctions were imported more than once, but should not (reportedby Brian Ripley, then Martin Morgan).• merge() is no longer allowed (in some ways) to create a dataframe with duplicate column names (which confused PR#14786).• Fixes for rendering raster images on X11 and Windows devices whenthe x-axis or y-axis scale is reversed.• getAnywhere() found S3 methods as seen from the utils namespaceand not from the environment from which it was called.• selectMethod(f, sig) would not return inherited group methodswhen caching was off (as it is by default).• dev.copy2pdf(out.type = "cairo") gave an error. (PR#14827)• Virtual classes (e.g., class unions) had a NULL prototype even ifthat was not a legal subclass. See ?setClassUnion.• The C prototypes for zdotc and zdotu in R_ext/BLAS.h have beenchanged to the more modern style rather than that used by f2c.(Patch by Berwin Turlach.)• isGeneric() produced an error for primitives that can not havemethods.• .C() or .Fortran() had a lack-of-protection error if theregistration information resulted in an argument being coerced toanother type.• boxplot(x=x, at=at) with non finite elements in x and non integerat could not generate a warning but failed.• heatmap(x, symm=TRUE, RowSideColors=*) no longer draws the colorsin reversed order.• predict(<ar>) was incorrect in the multivariate case, for p >= 2.• print(x, max=m) is now consistent when x is a "Date"; also the“reached ... max.print ..” messages are now consistently usingsingle brackets.• Closed the <li> tag in pages generated by Rd2HTML(). (PR#14841)• Axis tick marks could go out of range when a log scale was used.(PR#14833)• Signature objects in methods were not allocated as S4 objects(caused a problem with trace() reported by Martin Morgan).CHANGES IN R VERSION 2.14.2:NEW FEATURES:• The internal untar() (as used by default by R CMD INSTALL) nowknows about some pax headers which bsdtar (e.g., the default tarfor Mac OS >= 10.6) can incorrectly include in tar files, andwill skip them with a warning.• PCRE has been upgraded to version 8.21: as well as bug fixes andgreater Perl compatibility, this adds a JIT pattern compiler,about which PCRE's news says ‘large performance benefits can behad in many situations’. This is supported on most but not all Rplatforms.• Function compactPDF() in package tools now takes the default forargument gs_quality from environment variable GS_QUALITY: thereis a new value "none", the ultimate default, which preventsGhostScript being used in preference to qpdf just becauseenvironment variable R_GSCMD is set. If R_GSCMD is unset or setto "", the function will try to find a suitable GhostScriptexecutable.• The included version of zlib has been updated to 1.2.6.• For consistency with the logLik() method, nobs() for "nls" filesnow excludes observations with zero weight. (Reported by BerwinTurlach.)UTILITIES:• R CMD check now reports by default on licenses not according tothe description in ‘Writing R Extensions’.• R CMD check has a new option --as-cran to turn on most of thecustomizations that CRAN uses for its incoming checks.PACKAGE INSTALLATION:• R CMD INSTALL will now no longer install certain file types frominst/doc: these are almost certainly mistakes and for somepackages are wasting a lot of space. These are Makefile, filesgenerated by running LaTeX, and unless the package uses avignettes directory, PostScript and image bitmap files.Note that only PDF vignettes have ever been supported: some ofthese files come from DVI/PS output from the Sweave defaultsprior to R 2.13.0.BUG FIXES:• R configured with --disable-openmp would mistakenly setHAVE_OPENMP (internal) and SUPPORT_OPENMP (in Rconfig.h) eventhough no OpenMP flags were populated.• The getS3method() implementation had an old computation to findan S4 default method.• readLines() could overflow a buffer if the last line of the filewas not terminated. (PR#14766)• R CMD check could miss undocumented S4 objects in packages whichused S4 classes but did not Depends: methods in their DESCRIPTIONfile.• The HTML Help Search page had malformed links. (PR#14769)• A couple of instances of lack of protection of SEXPs have beensquashed. (PR#14772, PR#14773)• image(x, useRaster=TRUE) misbehaved on single-column x.(PR#14774)• Negative values for options("max.print") or the max argument toprint.default() caused crashes. Now the former are ignored andthe latter trigger an error. (PR#14779)• The text of a function body containing more than 4096 bytes wasnot properly saved by the parser when entered at the console.• Forgetting the #endif tag in an Rd file could cause the parser togo into a loop. (Reported by Hans-Jorg Bibiko.)• str(*, ....., strict.width="cut") now also obeys list.len = n.(Reported by Sören Vogel.)• Printing of arrays did not have enough protection (C level),e.g., in the context of capture.output(). (Reported by HervéPagès and Martin Morgan.)• pdf(file = NULL) would produce a spurious file named NA.(PR#14808)• list2env() did not check the type of its envir argument.(PR#14807)• svg() could segfault if called with a non-existent file path.(PR#14790)• make install can install to a path containing + characters.(PR#14798)• The edit() function did not respect the options("keep.source")setting. (Reported by Cleridy Lennert.)• predict.lm(*, type="terms", terms=*, se.fit=TRUE) did not work.(PR#14817)• There is a partial workaround for errors in the TREregular-expressions engine with named classes and repeat countsof at least 2 in a MBCS locale (PR#14408): these are avoided whenTRE is in 8-bit mode (e.g. for useBytes = TRUE and when all thedata are ASCII).• The C function R_ReplDLLdo1() did not call top-level handlers.• The Quartz device was unable to detect window sessions on Mac OSX 10.7 (Lion) and higher and thus it was not used as the defaultdevice on the console. Since Lion any application can use windowsessions, so Quartz will now be the default device if the user'swindow session is active and R is not run via ssh which is atleast close to the behavior in prior OS X versions.• mclapply() would fail in code assembling the translated errormessage if some (but not all) cores encountered an error.• format.POSIXlt(x) raised an arithmetic exception when x was aninvalid object of class "POSIXlt" and parts were empty.• installed.packages() has some more protection against packageinstalls going on in parallel.• .Primitive() could be mis-used to call .Internal() entry points.CHANGES IN R VERSION 2.14.1:NEW FEATURES:• parallel::detectCores() is now able to find the number ofphysical cores (rather than CPUs) on Sparc Solaris.It can also do so on most versions of Windows; however thedefault remains detectCores(logical = TRUE) on that platform.• Reference classes now keep a record of which fields are locked.$lock() with no arguments returns the names of the locked fields.• HoltWinters() reports a warning rather than an error for someoptimization failures (where the answer might be a reasonableone).• tools::dependsOnPkg() now accepts the shorthand dependencies ="all".• parallel::clusterExport() now allows specification of anenvironment from which to export.• The quartz() device now does tilde expansion on its fileargument.• tempfile() on a Unix-alike now takes the process ID into account.This is needed with multicore (and as part of parallel) becausethe parent and all the children share a session temporarydirectory, and they can share the C random number stream used toproduce the unique part. Further, two children can calltempfile() simultaneously.• Option print in Sweave's RweaveLatex() driver now emulatesauto-printing rather than printing (which can differ for an S4object by calling show() rather than print()).• filled.contour() now accepts infinite values: previously it mighthave generated invalid graphics files (e.g. containing NaNvalues).INSTALLATION:• On 64-bit Linux systems, configure now only sets LIBnn to lib64if /usr/lib64 exists. This may obviate setting LIBnn explicitlyon Debian-derived systems.It is still necessary to set LIBnn = lib (or lib32) for 32-bitbuilds of R on a 64-bit OS on those Linux distributions capablefor supporting that concept.• configure looks for inconsolata.sty, and if not found adjusts thedefault R_RD4PDF to not use it (with a warning, since it isneeded for high-quality rendering of manuals).PACKAGE INSTALLATION:• R CMD INSTALL will now do a test load for all sub-architecturesfor which code was compiled (rather than just the primarysub-architecture).UTILITIES:• When checking examples under more than one sub-architecture, RCMD check now uses a separate directory examples_arch for eachsub-architecture, and leaves the output in filepkgname-Ex_arch.Rout. Some packages expect their examples to berun in a clean directory ....BUG FIXES:• stack() now gives an error if no vector column is selected,rather than returning a 1-column data frame (contrary to itsdocumentation).• summary.mlm() did not handle objects where the formula had beenspecified by an expression. (Reported by Helios de RosarioMartinez).• tools::deparseLatex(dropBraces=TRUE) could drop text as well asbraces.• colormodel = "grey" (new in R 2.14.0)) did not always work inpostscript() and pdf().• file.append() could return TRUE for failures. (PR#14727)• gzcon() connections are no longer subject to garbage collection:it was possible for this to happen when unintended (e.g. whencalling load()).• nobs() does not count zero-weight observations for glm() fits,for consistency with lm(). This affects the BIC() valuesreported for such glm() fits. (Spotted by Bill Dunlap.)• options(warn = 0) failed to end a (C-level) context with morethan 50 accumulated warnings. (Spotted by Jeffrey Horner.)• The internal plot.default() code did not do sanity checks on acex argument, so invalid input could cause problems. (Reportedby Ben Bolker.)• anyDuplicated(<array>, MARGIN=0) no longer fails. (Reported byHervé Pagès.)• read.dcf() removes trailing blanks: unfortunately on someplatforms this included \xa0 (non-breaking space) which is thetrailing byte of a UTF-8 character. It now only considers ASCIIspace and tab to be ‘blank’.• There was a sign error in part of the calculations for thevariance returned by KalmanSmooth(). (PR#14738)• pbinom(10, 1e6, 0.01, log.p = TRUE) was NaN thanks to the buggyfix to PR#14320 in R 2.11.0. (PR#14739)• RweaveLatex() now emulates auto-printing rather than printing, bycalling methods::show() when auto-printing would.• duplicated() ignored fromLast for a one-column data frame.(PR#14742)• source() and related functions did not put the correct timestampon the source references; srcfilecopy() has gained a new argumenttimestamp to support this fix. (PR#14750)• srcfilecopy() has gained a new argument isFile and now recordsthe working directory, to allow debuggers to find the originalsource file. (PR#14826)• LaTeX conversion of Rd files did not correctly handlepreformatted backslashes. (PR#14751)• HTML conversion of Rd files did not handle markup within tabularcells properly. (PR#14708)• source() on an empty file with keep.source = TRUE tried to readfrom stdin(), in R 2.14.0 only. (PR#14753)• The code to check Rd files in packages would abort if duplicatedescription sections were present.CHANGES IN R VERSION 2.14.0:SIGNIFICANT USER-VISIBLE CHANGES:• All packages must have a namespace, and one is created oninstallation if not supplied in the sources. This means that anypackage without a namespace must be re-installed under thisversion of R (but previously-installed data-only packages withoutR code can still be used).• The yLineBias of the X11() and windows() families of devices hasbeen changed from 0.1 to 0.2: this changes slightly the verticalpositioning of text in the margins (including axis annotations).This is mainly for consistency with other devices such asquartz() and pdf(). (Wish of PR#14538.)There is a new graphics parameter "ylbias" which allows they-line bias of the graphics device to be tweaked, including toreproduce output from earlier versions of R.• Labeling of the p-values in various anova tables has beenrationalized to be either "Pr(>F)" or "Pr(>Chi)" (i.e. the"Pr(F)", "Pr(Chi)" and "P(>|Chi|)" variants have beeneliminated). Code which extracts the p value _via_ indexing byname may need adjustment.• :: can now be used for datasets made available for lazy-loadingin packages with namespaces (which makes it consistent with itsuse for data-only packages without namespaces in earlier versionsof R).• There is a new package parallel.It incorporates (slightly revised) copies of packages multicoreand snow (excluding MPI, PVM and NWS clusters). Code written touse the higher-level API functions in those packages should workunchanged (apart from changing any references to their namespacesto a reference to parallel, and links explicitly to multicore orsnow on help pages).It also contains support for multiple RNG streams followingL'Ecuyer _et al_ (2002), with support for both mclapply and snowclusters. This replaces functions like clusterSetupRNG() fromsnow (which are not in parallel).The version released for R 2.14.0 contains base functionality:higher-level convenience functions are planned (and some arealready available in the ‘R-devel’ version of R).• Building PDF manuals (for R itself or packages, e.g. _via_ R CMDcheck) by default requires the LaTeX package inconsolata: see thesection on ‘Making the manuals’ in the ‘R Installation andAdministration Manual’.• axTicks(*, log=TRUE) has changed in some cases to satisfy thedocumented behavior and be consistent.NEW FEATURES:• txtProgressBar() can write to an open connection instead of theconsole.• Non-portable package names ending in . are no longer allowed.Nor are single-character package names (R was alreadydisallowed).• regexpr() and gregexpr() with perl = TRUE allows Python-stylenamed captures. (Wish and contribution of PR#14518.)• The placement of ‘plotmath’ text in the margins of plots done bybase graphics now makes the same vertical adjustment as ordinarytext, so using ordinary and plotmath text on the same margin linewill seem better aligned (but not exactly aligned, since ordinarytext has descenders below the baseline and plotmath places themon the baseline). (Related to PR#14537.)• sunflowerplot() now has a formula interface. (Wish of PR#14541.)• iconv() has a new argument toRaw to handle encodings such asUTF-16 with embedded nuls (as was possible before the CHARSXPcache was introduced).It will also accept as input the type of list generated withtoRaw = TRUE.• Garbage-collecting an unused input text connection no longergives a warning (since it ‘connects’ to nothing outside R).• read.table() and scan() have gained a text argument, to allowreading data from a (possibly literal) character string.• optim(*, method = .) now allows method = "Brent" as an interfaceto optimize(), for use in cases such as mle() where optim() isused internally.• mosaicplot() gains a border argument. (Wish of PR#14550.)• smooth.spline() gains a tol argument which controls how differentx values need to be to be treated as distinct. The default hasbeen changed to be more reliable for inputs whose range is smallcompared to their maximum absolute value. (Wish of PR#14452.)• gl() runs faster by avoiding calling factor().• The print() method for object.size() accepts B as well as b as anabbreviation for ‘bytes’.• unlink() gains a force argument to work like rm -f and ifpossible override restrictive permissions.• pbirthday() and qbirthday() now use exact calculations forcoincident = 2.• unzip() and unz() connections have been updated with support formore recent Zip64 features (including large file sizes and bzip2compression, but not UTF-8 file names).unzip() has a new option to restore file times from thoserecorded (in an unknown timezone) in the zip file.• update.packages() now accepts a character vector of package namesfor the oldPkgs argument. (Suggestion of Tal Galili.)• The special reference class fields .self and .refClassDef are nowread-only to prevent corrupting the object.• decompose() now returns the original series as part of its value,so it can be used (rather than reconstructed) when plotting.(Suggestion of Rob Hyndman.)• Rao's efficient score test has been implemented for glm objects.Specifically, the add1, drop1, and anova methods now allow test ="Rao".• If a saved workspace (e.g. .RData) contains objects that cannotbe loaded, R will now start with an warning message and an emptyworkspace, rather than failing to start.• strptime() now accepts times such as 24:00 for midnight at theend of the day, for although these are disallowed by POSIX1003.1-2008, ISO 8601:2004 allows them.• Assignment of names() to S4 objects now checks for acorresponding "names" slot, and generates a warning or an errorif that slot is not defined. See the section on slots in?Classes.• The default methods for is.finite(), is.infinite() and is.nan()now signal an error if their argument is not an atomic vector.• The formula method for plot() no longer places package stats onthe search path (it loads the namespace instead).• There now is a genuine "function" method for plot() rather thanthe generic dispatching internally to graphics::plot.function().It is now exported, so can be called directly as plot.function().• The one-sided ks.test() allows exact = TRUE to be specified inthe presence of ties (but the approximate calculation remains thedefault: the ‘exact’ computation makes assumptions known to beinvalid in the presence of ties).• The behaviour of curve(add = FALSE) has changed: it now no longertakes the default x limits from the previous plot (if any):rather they default to c(0, 1) just as the "function" method forplot(). To get the previous behaviour use curve(add = NA), whichalso takes the default for log-scaling of the x-axis from theprevious plot.• Both curve() and the plot() method for functions have a newargument xname to facilitate plots such as sin(t) _vs_ t.• The local argument to source() can specify an environment as wellas TRUE (parent.env()) and FALSE (.GlobalEnv). It gives bettererror messages for other values, such as NA.• vcov() gains methods for classes "summary.lm" and "summary.glm".• The plot() method for class "profile.nls" gains ylab and ltyarguments, and passes ... on to plot.default.• Character-string arguments such as the mode argument of vector(),as.vector() and is.vector() and the description argument offile() are required to be of length exactly one, rather than anyfurther elements being silently discarded. This helps catchincorrect usage in programming.• The length argument of vector() and its wrappers such asnumeric() is required to be of length exactly one (other valuesare now an error rather than giving a warning as previously).• vector(len) and length(x) <- len no longer accept TRUE/FALSE forlen (not that they were ever documented to, but there wasspecial-casing in the C code).• There is a new function Sys.setFileTime() to set the time of afile (including a directory). See its help for exactly whichtimes it sets on various OSes.• The file times reported by file.info() are reported to sub-secondresolution on systems which support it. (Currently the POSIX2008 and FreeBSD/Darwin/NetBSD methods are detected.)• New function getCall(m) as an abstraction for m$call, enablingupdate()'s default method to apply more universally. (NB: thiscan be masked by existing functions in packages.)• Sys.info() gains a euser component to report the ‘effective’ useron OSes which have that concept.• The result returned by try() now contains the original errorcondition object as the "condition" attribute.• All packages with R code are lazy-loaded irrespective of theLazyLoad field in the DESCRIPTION file. A warning is given ifthe LazyLoad field is overridden.• Rd markup has a new \figure tag so that figures can be includedin help pages when converted to HTML or LaTeX. There areexamples on the help pages for par() and points().• The built-in httpd server now allows access to files in thesession temporary directory tempdir(), addressed as the /sessiondirectory on the httpd server.• Development versions of R are no longer referred to by the numberunder which they might be released, e.g. in the startup banner, R--version and sessionUtils(). The correct way to refer to adevelopment version of R is ‘R-devel’, preferably with the dateand SVN version number.E.g. R-devel (2011-07-04 r56266)• There is a new function texi2pdf() in package tools, currently aconvenience wrapper for texi2dvi(pdf = TRUE).• There are two new options for typesetting PDF manuals from Rdfiles. These are beramono and inconsolata, and used the namedfont for monospaced output. They are intended to be used incombination with times, and times,inconsolata,hyper is now thedefault for the reference manual and package manuals. If you donot have that font installed, you can set R_RD4PF to one of theother options: see the ‘R Installation and AdministrationManual’.• Automatic printing for reference classes is now done by the$show() method. A method is defined for class envRefClass andmay be overridden for user classes (see the ?ReferenceClassesexample). S4 show() methods should no longer be needed forreference classes.• tools::Rdiff (by default) and R CMD Rdiff now ignore differencesin pointer values when comparing printed environments, compiledbyte code, etc.• The "source" attribute on functions created with keep.source=TRUEhas been replaced with a "srcref" attribute. The "srcref"attribute references an in-memory copy of the source file usingthe "srcfilecopy" class or the new "srcfilealias" class.*NB:* This means that functions sourced with keep.source = TRUEand saved (e.g., by save() or readRDS()) in earlier versions of Rwill no longer show the original sources (including comments).• New items User Manuals and Technical Papers have been added tothe HTML help main page. These link to vignettes in the base andrecommended packages and to a collection of papers about Rissues, respectively.• Documentation and messages have been standardized to use“namespace” rather than “name space”.• setGeneric() now looks in the default packages for a non-genericversion of a function if called from a package with a namespace.(It always did for packages without a namespace.)• Setting the environment variable _R_WARN_ON_LOCKED_BINDINGS_ willgive a warning if an attempt is made to change a locked binding.• \SweaveInput is now supported when generating concordances inSweave().• findLineNum() and setBreakpoint() now allow the environment to bespecified indirectly; the latter gains a clear argument to allowit to call untrace().• The body of a closure can be one of further types of R objects,including environments and external pointers.• The Rd2HTML() function in package tools now has a stylesheetargument, allowing pages to be displayed in alternate formats.• New function requireNamespace() analogous to require(), returninga logical value after attempting to load a namespace.• There is a new type of RNG, "L'Ecuyer-CMRG", implementingL'Ecuyer (1999)'s ‘combined multiple-recursive generator’MRG32k3a. See the comments on ?RNG.• help.search() and ?? can now display vignettes and demos as wellas help pages. The new option "help.search.types" controls thetypes of documentation and the order of their display.This also applies to HTML searches, which now give results in allof help pages, vignettes and demos.• socketConnection() now has a timeout argument. It is nowdocumented that large values (package snow used a year) do notwork on some OSes.• The initialization of the random-number generator now uses theprocess ID as well as the current time, just in case two Rprocesses are launched very rapidly on a machine withlow-resolution wall clock (some have a resolution of a second;modern systems have microsecond-level resolution).• New function pskill() in the tools package to send a terminatesignal to one or more processes, plus constants such as SIGTERMto provide a portable way to refer to signals (since the numericvalues are OS-dependent).• New function psnice() in the tools package to return or changethe ‘niceness’ of a process. (Refers to the ‘priority class’ onWindows.)• list.dirs() gains a recursive argument.• An Authors@R field in a package DESCRIPTION file can now be usedto generate Author and Maintainer fields if needed, and toauto-generate package citations.• New utility getElement() for accessing either a list component ora slot in an S4 object.• stars() gains a col.lines argument, thanks to Dustin Sallings.(Wish of PR#14657.)• New function regmatches() for extracting or replacing matched ornon-matched substrings from match data obtained by regexpr(),gregexpr() and regexec().• help(package = "pkg_name", help_type = "HTML") now gives HTMLhelp on the package rather than text help. (This gives directaccess to the HTML version of the package manual shown _via_help.start()'s ‘Packages’ menu.)• agrep() gains a fixed argument to optionally allow approximateregular expression matching, and a costs argument to specifypossibly different integer match costs for insertions, deletionsand substitutions.• read.dcf() and write.dcf() gain a keep.white argument to indicatefields where whitespace should be kept as is.• available.packages() now works around servers that fail to returnan error code when PACKAGES.gz does not exist. (Patch submittedby Seth Schommer.)• readBin() can now read more than 2^31 - 1 bytes in a single call(the previously documented limitation).• New function regexec() for finding the positions of matches aswell as all substrings corresponding to parenthesizedsubexpressions of the given regular expression.• New function adist() in package utils for computing ‘edit’(generalized Levenshtein) distances between strings.• Class "raster" gains an is.na method to avoid confusion from themisuse of the matrix method (such as PR#14618).• The identical() function gains an ignore.bytecode argument tocontrol comparison of compiled functions.• pmin and pmax now warn if an argument is partially recycled (wishof PR#14638).• The default for image(useRaster=) is now taken from option"preferRaster": for the small print see ?image.• str() now displays reference class objects and their fields,rather than treating them as classical S4 classes.• New function aregexec() in package utils for finding thepositions of approximate string matches as well as all substringscorresponding to parenthesized subexpressions of the givenregular expression.• download.file() has an extra argument to pass additionalcommand-line options to the non-default methods usingcommand-line utilities.cacheOK = FALSE is now supported for method = "curl".• interaction.plot(*, type = .) now also allows type "o" or "c".• axTicks(*, log=TRUE) did sometimes give more values than theticks in the corresponding graphics::axis(). By default, it nowmakes use of the new (graphics-package independent) axisTicks()which can make use of a new utility .axisPars(). Further, it nowreturns a decreasing sequence (as for log=FALSE) when usr isdecreasing.• Using fix() or edit() on a R object (except perhaps a matrix ordata frame) writes its temporary file with extension .R soeditors which select their mode based on the extension willselect a suitable mode.GRAPHICS DEVICES:• The pdf() device makes use of Flate compression: this iscontrolled by the new logical argument compress, and is enabledby default.• Devices svg(), cairo_pdf() and cairo_ps() gain a family argument.On a Unix-alike X11() gains a family argument. This is one ofthe x11.options() and so can be passed as an argument to thebmp(), jpeg(), png() and tiff() devices.Analogous changes have been made on Windows, so all built-in Rgraphics devices now have a family argument except pictex()(which has no means to change fonts).• The bmp(), jpeg(), png() and tiff() devices now make use of theantialias argument for type = "quartz".• There are several new built-in font mappings for X11(type ="Xlib"): see the help on X11Fonts().• There is a new type X11(type = "dbcairo") which updates thescreen less frequently: see its help page.• The X11() device now makes use of cursors to distinguish itsstates. The normal cursor is an arrow (rather than a crosshair);the crosshair is used when the locator is in use, and a watchcursor is shown when plotting computations are being done.(These are the standard names for X11 cursors: how they areactually displayed depends on the window manager.)• New functions dev.hold() and dev.flush() for use with graphicsdevices with buffering. These are used for most of thehigh-level graphics functions such as boxplot(), so that the plotis only displayed when the page is complete.Currently implemented for windows(buffered = TRUE), quartz() andthe cairographics-based X11() types with buffering (which are thedefault on-screen devices).• New function dev.capture() for capture of bitmap snapshots ofimage-based devices (a superset of the functionality provided bygrid.cap() in grid).• The default colormodel for pdf() and postscript() is now called"srgb" to more accurately describe it. (Instead of "rgb", and inthe case of postscript() it no longer switches to and from thegray colorspace, by default.)The colormodel for postscript() which does use both gray and sRGBcolorspaces is now called "srgb+gray".Plots which are known to use only black/white/transparent canadvantageously use colormodel = "gray" (just as before, but thereis now slightly more advantage in doing so).• postscript() with values colormodel = "rgb" and colormodel ="rgb-nogray" give the behaviour prior to R 2.13.0 of uncalibratedRGB, which under some circumstances can be rendered much fasterby a viewer.pdf(colormodel = "rgb") gives the behaviour prior to R 2.13.0 ofuncalibrated RGB, which under some circumstances can be renderedfaster by a viewer, and the files will be smaller (by about 9KBif compression is not used).• The postscript() device only includes the definition of the sRGBcolorspace in the output file for the colormodels which use it.• The postscript() and pdf() devices now output greyscale rasterimages (and not RGB) when colormodel = "gray".• postscript(colormodel = "gray") now accepts non-grey colours anduses their luminance (as pdf() long has).• colormodel = "grey" is allowed as an alternative name forpostscript() and pdf().• pdf() in the default sRGB colorspace outputs many fewer changesof colorspace, which may speed up rendering in some viewingapplications.• There is a new function dev.capabilities() to query thecapabilities of the current device. The initial set ofcapabilities are support for semi-transparent colours, renderingand capturing raster images, the locator and for interactiveevents.• For pdf(), maxRasters is increased as needed so the argument isno longer used.SWEAVE & VIGNETTES:• Options keep.source = TRUE, figs.only = FALSE are now thedefault.• The way the type of user-defined options is determined haschanged. Previously they were all regarded as logical: now thetype is determined by the value given at first use.• The allowed values of logical options are now precisely thoseallowed for character inputs to as.logical(): this means that tand f are no longer allowed (although T and F still are).• The preferred location for vignette sources is now the directoryvignettes and not inst/doc: R CMD build will now re-buildvignettes in directory vignettes and copy the .Rnw (etc) filesand the corresponding PDFs to inst/doc. Further files to becopied to inst/doc can be specified _via_ the filevignettes/.install_extras.• R CMD Sweave now supports a --driver option to select the Sweavedriver: the default is equivalent to --driver=RweaveLatex.• R CMD Sweave and R CMD Stangle support options --encoding and--options.• The Rtangle() driver allows output = "stdout" or output ="stderr" to select the output or message connection. This isconvenient for scripting using something likeR CMD Stangle --options='output="stdout"' foo.Rnw > foo2.R• There is a new option pdf.compress controlling whether PDFfigures are generated using Flate compression (they are bydefault).• R CMD Sweave now has a --pdf option to produce a PDF version ofthe processed Sweave document.• It is no longer allowed to have two vignettes with the samevignette basename (e.g. vig.Rnw and vig.Snw). (Previously onevignette hid the other in the vignette() function.)C-LEVEL FACILITIES:• Function R_tmpnam2 has been added to the API to allow a temporaryfilename to include a specified extension.PACKAGE INSTALLATION:• Package DESCRIPTION file field KeepSource forces the package tobe installed with keep.source = TRUE (or FALSE). (Suggestion ofGreg Snow. Note that as all packages are lazy-loaded, this isnow only relevant at installation.)There are corresponding options --with-keep.source and--without-keep.source for R CMD INSTALL.• R CMD INSTALL has a new option --byte-compile to byte-compile thepackages during installation (since all packages are nowlazy-loaded). This can be controlled on a per-package basis bythe optional field ByteCompile in the DESCRIPTION file.• A package R code but without a NAMESPACE file will have a defaultone created at R CMD build or R CMD INSTALL time, so all packageswill be installed with namespaces. A consequence of this is that.First.lib() functions need to be copied to .onLoad() (usually)or .onAttach(). For the time being, if there is anauto-generated NAMESPACE file and no .onLoad() nor .onAttach()function is found but .First.lib() is, it will be run as theattach hook (unless the package is one of a list of knownexceptions, when it will be run as the load hook).• A warning is given if test-loading a package changes a lockedbinding in a package other than itself. It is likely that thiswill be disallowed in future releases. (There are _pro tem_ someexceptions to the warning.)• A dependency on SVN revision is allowed for R, e.g. R (>=r56550). This should be used in conjunction with a versionnumber, e.g. R (>= 2.14.0), R (>= r56550) to distinguish betweenR-patched and R-devel versions with the same SVN revision.• installed.packages() now hashes the names of its cache files toavoid very rare problems with excessively long path names.(PR#14669)• A top-level COPYING file in a package is no longer installed(file names LICENSE or LICENCE having long been preferred).UTILITIES:• R CMD check now gives an error if the R code in a vignette failsto run, unless this is caused by a missing package.• R CMD check now unpacks tarballs in the same way as R CMDINSTALL, including making use of the environment variableR_INSTALL_TAR to override the default behaviour.• R CMD check performs additional code analysis of package startupfunctions, and notifies about incorrect argument lists and(incorrect) calls to functions which modify the search path orinappropriately generate messages.• R CMD check now also checks compiled code for symbolscorresponding to functions which might terminate R or write tostdout/stderr instead of the console.• R CMD check now uses a pdf() device when checking examples(rather than postscript()).• R CMD check now checks line-endings of makefiles andC/C++/Fortran sources in subdirectories of src as well as in srcitself.• R CMD check now reports as a NOTE what look like methodsdocumented with their full names even if there is a namespace andthey are exported. In almost all cases they are intended to beused only as methods and should use the \method markup. In theother rare cases the recommended form is to use a function suchas coefHclust which would not get confused with a method,document that and register it in the NAMESPACE file bys3method(coef, hclust, coefHclust).• The default for the environment variable _R_CHECK_COMPACT_DATA2_is now true: thus if using the newer forms of compressionintroduced in R 2.10.0 would be beneficial is now checked (bydefault).• Reference output for a vignette can be supplied when checking apackage by R CMD check: see ‘Writing R Extensions’.• R CMD Rd2dvi allows the use of LaTeX package inputenx rather thaninputenc: the value of the environment variable RD2DVI_INPUTENCis used. (LaTeX package inputenx is an optional install whichprovides greater coverage of the UTF-8 encoding.)• Rscript on a Unix-alike now accepts file names containing spaces(provided these are escaped or quoted in the shell).• R CMD build on a Unix-alike (only) now tries to preserve dates onfiles it copies from its input directory. (This was theundocumented behaviour prior to R 2.13.0.)DEPRECATED AND DEFUNCT:• require() no longer has a save argument.• The gamma argument to hsv(), rainbow(), and rgb2hsv() has beenremoved.• The --no-docs option for R CMD build --binary is defunct: use--install-args instead.• The option --unsafe to R CMD INSTALL is defunct: use theidentical option --no-lock instead.• The entry point pythag formerly in Rmath.h is defunct: useinstead the C99 function hypot.• R CMD build --binary is formally defunct: R CMD INSTALL --buildhas long been the preferred alternative.• zip.file.extract() is now defunct: use unzip() or unz() instead.• R CMD Rd2dvi without the --pdf option is now deprecated: only PDFoutput will be supported in future releases (since this allowsthe use of fonts only supported for PDF), and only R CMD Rd2pdfwill be available.• Options such as --max-nsize and the function mem.limits() are nowdeprecated: these limits are nowadays almost never used, and arereported by gc() when they are in use.• Forms like binomial(link = "link") for GLM families deprecatedsince R 2.4.0 are now defunct.• The declarativeOnly argument to loadNamespace() (not relevantsince R 2.13.0) has been removed.• Use of library.dynam() without specifying all the first threearguments is deprecated. (It is often called from a namespace,and the defaults are only appropriate to a package.)Use of chname in library.dynam() with the extension .so or .dll(which is clearly not allowed according to the help page) isdeprecated. This also applies to library.dynam.unload() anduseDynLib directives in NAMESPACE files.• It is deprecated to use mean(x) and sd(x) directly on data frames(or also matrices, for sd) x, instead of simply using sapply.In the same spirit, median(x) now gives an error for a data framex (it often gave nonsensical results).• The keep.source argument to library() and require() isdeprecated: it was only used for packages installed withoutlazy-loading, and now all packages are lazy-loaded.• Using a false value for the DESCRIPTION field LazyLoad isdeprecated.INSTALLATION:• The base and recommended packages are now byte-compiled(equivalent to make bytecode in R 2.13.x).• Configure option --with-system-zlib now only makes use of thebasic interface of zlib and not the C function gzseek which hasshown erroneous behaviour in zlib 1.2.4 and 1.2.5.• The zlib in the R sources is now version 1.2.5. (This is safeeven on 32-bit Linux systems because only the basic interface isnow used.)• The .afm files in package grDevices are now installed ascompressed files (as long done on Windows), saving ca 2MB on theinstalled size.• The non-screen cairo-based devices are no longer in the X11module and so can be installed without X11. (We have never seena Unix-alike system with cairographics installed but not X11, buta user might select --without-x.)• Configure will try to use -fobjc-exceptions for the Objective-Ccompiler (if present) to ensure that even compilers that do notenable exceptions by default (such as vanilla gcc) can be used.(Objective-C is currently only used on Mac OS X.)• The system call times is required.• The C99 functions acosh, asinh, atanh, snprintf and vsnprintf arenow required.• There is no longer support for making DVI manuals _via_ make dvi,make install-dvi and similar. Only PDF manuals are supported (toallow the use of fonts which are only available for PDF.)• The configure arguments used during configuration of R areincluded as a comment in Makeconf for informative purposes onUnix-alikes in a form suitable for shell execution. Note thatthose are merely command-line arguments, they do not includeenvironment variables (one more reason to use configure variablesinstead) or site configuration settings.• Framework installation now supports DESTDIR (Mac OS X only).• Java detection (R CMD javareconf) works around bogusjava.library.path property in recent Oracle Java binaries.BUG FIXES:• The locale category LC_MONETARY was only being set on startup onWindows: that is now done on Unix-alikes where supported.• Reference class utilities will detect an attempt to modifymethods or fields in a locked class definition (e.g., in anamespace) and generate an error.• The formula methods for lines(), points() and text() now workeven if package stats is not on the search path.• In principle, S4 classes from different packages could have thesame name. This has not previously worked. Changes have nowbeen installed that should allow such classes and permit methodsto use them. New functions className() and multipleClasses() arerelated tools for programming.• Work around an issue in Linux (a system select call resetting tv)which prevented internet operations from timing out properly.• Several stack trampling and overflow issues have been fixed inTRE, triggered by agrep and friends with long patterns.(PR#14627)• (“design infelicity”) Field assignments in reference classes arenow consistent with slots in S4 classes: the assigned value mustcome from the declared class (if any) for the field or from asubclass.• The methods objects constructed for "coerce" and "coerce<-" werelacking some essential information in the generic, defined andtarget slots; as() did not handle duplicate class definitionscorrectly.• The parser no longer accepts the digit 8 in an octal charactercode in a string, nor does it accept unterminated strings in afile. (Reported by Bill Dunlap.)• The print() method for class "summary.aov" did not pass onargument digits when summary() was called on a single object, andhence used more digits than documented.• The X11() device's cairo back-end produced incorrect capturesnapshot images on big-endian machines.• loglin() gave a spurious error when argument margin consisted ofa single element of length one. (PR#14690)• loess() is better protected against misuse, e.g. zero-lengthspan. (PR#14691)• HoltWinters() checks that the optimization succeeded. (PR#14694)• The (undocumented) inclusion of superclass objects in defaultinitializing of reference classes overwrote explicit fieldarguments. The bug is fixed, the feature documented and a testadded.• round(x, -Inf) now does something sensible (return zero ratherthan NA).• signif(x, -Inf) now behaves as documented (signif(x, 1)) ratherthan giving zero.• The "table" method for Axis() hardcoded side = 1, hence calls toplot(<vector>, <table>) labelled the wrong axis. (PR#14699)• Creating a connection might fail under gctorture(TRUE).• stack() and unstack() converted character columns to factors.unstack() sometimes produced incorrect results (a list or avector) if the factor on which to un-split had only one level.• On some systems help(".C", help_type = "pdf") and similargenerated file names that TeX was unable to handle.• Non-blocking listening socket connections continued to reportisIncomplete() as true even when the peer had closed down and allavailable input had been read.• The revised HTML search system now generates better hyperlinks tohelp topics found: previously it gave problems with help pageswith names containing e.g. spaces and slashes.• A late change in R 2.13.2 broke \Sexpr expressions in Rd files.• The creation of ticks on log axes (including by axTicks())sometimes incorrectly omitted a tick at one end of the range byrounding error in a platform-dependent way. This could be seenin the examples for axTicks(), where with axis limits c(0.2, 88)the tick for 0.2 was sometimes omitted.• qgamma() for small shape underflows to 0 rather than sometimesgiving NaN. (PR#8528, PR#14710)• mapply() now gives an explicit error message (rather than anobscure one) if inputs of zero and positive length are mixed.• Setting a Hershey font family followed by string height querywould crash R.• R CMD javareconf -e would fail for some shells due to a shifterror. Also the resulting paths will no longer contain$(JAVA_HOME) as that can result in an unintended substitutionbased on Makeconf instead of the shell setting.CHANGES IN R VERSION 2.13.2:NEW FEATURES:• mem.limits() now reports values larger than the maximum integer(previously documented to be reported as NA), and allows largervalues to be set, including Inf to remove the limit.• The print() methods for classes "Date", "POSIXct" and "POSIXlt"respect the option "max.print" and so are much faster for verylong datetime vectors. (Suggestion of Yohan Chalabi.)• untar2() now works around errors generated with tar files thatuse more than the standard 6 digits for the checksum. (PR#14654)• install.packages() with Ncpus > 1 guards against simultaneousinstallation of indirect dependencies as well as direct ones.• Sweave now knows about a few more Windows' encodings (includingcp1250 and cp1257) and some inputenx encodings such as koi8-r.• postscript(colormodel = "rgb-nogray") no longer sets the sRGBcolorspace for each colour and so some viewers may render itsfiles much faster than the default colormodel ="rgb".• The default for pdf(maxRasters=) has been increased from 64 to1000.• readBin() now warns if signed = FALSE is used inappropriately(rather than being silently ignored).It enforces the documented limit of 2^31-1 bytes in a singlecall.• PCRE has been updated to version 8.13, a bug-fix release withupdated Unicode tables (version 6.0.0). An additional patch(r611 from PCRE 8.20-to-be) has been added to fix a collationsymbol recognition issue.INSTALLATION:• It is possible to build in src/extra/xdr on more platforms.(Needed since glibc 2.14 hides its RPC implementation.)• configure will find the Sun TI-RPC implementation of xdr (inlibtirpc) provided its header files are in the search path: seethe ‘R Installation and Administration Manual’.PACKAGE INSTALLATION:• Using a broad exportPattern directive in a NAMESPACE file is nolonger allowed to export internal objects such as .onLoad and.__S3MethodsTable__. .These are also excluded from imports, along with .First.lib.BUG FIXES:• fisher.test() had a buglet: If arguments were factors with unusedlevels, levels were dropped and you would get an error sayingthat there should be at least two levels, inconsistently withpre-tabulated data. (Reported by Michael Fay).• package.skeleton() will no longer dump S4 objects supplieddirectly rather than in a code file. These cannot be restoredcorrectly from the dumped version.• Build-time expressions in help files did not have access tofunctions in the package being built (with R CMD build).• Because quote() did not mark its result as being in use,modification of the result could in some circumstances modify theoriginal call.• Plotting pch = '.' now guarantees at least a one-pixel dot if cex> 0.• The very-rarely-used command-line option --max-vsize wasincorrectly interpreted as a number of Vcells and not in bytes asdocumented. (Spotted by Christophe Rhodes.)• The HTML generated by Rd2HTML() comes closer to being standardscompliant.• filter(x, recursive = TRUE) gave incorrect results on a seriescontaining NAs. (Spotted by Bill Dunlap.)• Profiling stats::mle() fits with a fixed parameter was notsupported. (PR#14646)• retracemem() was still using positional matching. (PR#14650)• The quantile method for "ecdf" objects now works and isdocumented.• xtabs(~ .., ..., sparse=TRUE) now also works together with anexclude = .. specification.• decompose() computed an incorrect seasonal component for timeseries with odd frequencies.• The pdf() device only includes the definition of the sRGBcolorspace in the output file for the "rgb" colormodel (and notfor "gray" nor "cmyk"): this saves ca 9KB in the output file.• .hasSlot() wrongly gave FALSE in some cases.• Sweave() with keep.source=TRUE could generate spurious NA lineswhen a chunk reference appeared last in a code chunk.• \Sexpr[results=rd] in an .Rd file now first triesparse_Rd(fragment=FALSE) to allow Rd section-level macros to beinserted.• The print() method for class "summary.aov" did not pass onarguments such as signif.stars when summary() was called on asingle object. (PR#14684)• In rare cases ks.test() could return a p-value very slightly lessthan 0 by rounding error. (PR#14671)• If trunc() was called on a "POSIXlt" vector and the result wassubsetted, all but the first element was converted to NA.(PR#14679)• cbind() and rbind() could cause memory corruption when used on acombination of raw and logical/integer vectors.CHANGES IN R VERSION 2.13.1:NEW FEATURES:• iconv() no longer translates NA strings as "NA".• persp(box = TRUE) now warns if the surface extends outside thebox (since occlusion for the box and axes is computed assumingthe box is a bounding box). (PR#202)• RShowDoc() can now display the licences shipped with R, e.g.RShowDoc("GPL-3").• New wrapper function showNonASCIIfile() in package tools.• nobs() now has a "mle" method in package stats4.• trace() now deals correctly with S4 reference classes andcorresponding reference methods (e.g., $trace()) have been added.• xz has been updated to 5.0.3 (very minor bugfix release).• tools::compactPDF() gets more compression (usually a little,sometimes a lot) by using the compressed object streams of PDF1.5.• cairo_ps(onefile = TRUE) generates encapsulated EPS on platformswith cairo >= 1.6.• Binary reads (e.g. by readChar() and readBin()) are now supportedon clipboard connections. (Wish of PR#14593.)• as.POSIXlt.factor() now passes ... to the character method(suggestion of Joshua Ulrich). [Intended for R 2.13.0 butaccidentally removed before release.]• vector() and its wrappers such as integer() and double() now warnif called with a length argument of more than one element. Thishelps track down user errors such as calling double(x) instead ofas.double(x).INSTALLATION:• Building the vignette PDFs in packages grid and utils is now partof running make from an SVN checkout on a Unix-alike: a separatemake vignettes step is no longer required.These vignettes are now made with keep.source = TRUE and hencewill be laid out differently.• make install-strip failed under some configuration options.• Packages can customize non-standard installation of compiled codevia a src/install.libs.R script. This allows packages that havearchitecture-specific binaries (beyond the package's sharedobjects/DLLs) to be installed in a multi-architecture setting.SWEAVE & VIGNETTES:• Sweave() and Stangle() gain an encoding argument to specify theencoding of the vignette sources if the latter do not contain a\usepackage[]{inputenc} statement specifying a single inputencoding.• There is a new Sweave option figs.only = TRUE to run each figurechunk only for each selected graphics device, and not first usingthe default graphics device. This will become the default in R2.14.0.• Sweave custom graphics devices can have a custom functionfoo.off() to shut them down.• Warnings are issued when non-portable filenames are found forgraphics files (and chunks if split = TRUE). Portable names areregarded as alphanumeric plus hyphen, underscore, plus and hash(periods cause problems with recognizing file extensions).• The Rtangle() driver has a new option show.line.nos which is bydefault false; if true it annotates code chunks with a commentgiving the line number of the first line in the sources (thebehaviour of R >= 2.12.0).• Package installation tangles the vignette sources: this step nowconverts the vignette sources from the vignette/package encodingto the current encoding, and records the encoding (if not ASCII)in a comment line at the top of the installed .R file.LICENCE:• No parts of R are now licensed solely under GPL-2. The licencesfor packages rpart and survival have been changed, which meansthat the licence terms for R as distributed are GPL-2 | GPL-3.DEPRECATED AND DEFUNCT:• The internal functions .readRDS() and .saveRDS() are nowdeprecated in favour of the public functions readRDS() andsaveRDS() introduced in R 2.13.0.• Switching off lazy-loading of code _via_ the LazyLoad field ofthe DESCRIPTION file is now deprecated. In future all packageswill be lazy-loaded.• The off-line help() types "postscript" and "ps" are deprecated.UTILITIES:• R CMD check on a multi-architecture installation now skips theuser's .Renviron file for the architecture-specific tests (whichdo read the architecture-specific Renviron.site files). This isconsistent with single-architecture checks, which use--no-environ.• R CMD build now looks for DESCRIPTION fields BuildResaveData andBuildKeepEmpty for per-package overrides. See ‘Writing RExtensions’.BUG FIXES:• plot.lm(which = 5) was intended to order factor levels inincreasing order of mean standardized residual. It ordered thefactor labels correctly, but could plot the wrong group ofresiduals against the label. (PR#14545)• mosaicplot() could clip the factor labels, and could overlap themwith the cells if a non-default value of cex.axis was used.(Related to PR#14550.)• dataframe[[row,col]] now dispatches on [[ methods for theselected column. (Spotted by Bill Dunlap).• sort.int() would strip the class of an object, but leave itsobject bit set. (Reported by Bill Dunlap.)• pbirthday() and qbirthday() did not implement the algorithmexactly as given in their reference and so were unnecessarilyinaccurate.pbirthday() now solves the approximate formula analyticallyrather than using uniroot() on a discontinuous function.The description of the problem was inaccurate: the probability isa tail probability (‘2 _or more_ people share a birthday’)• Complex arithmetic sometimes warned incorrectly about producingNAs when there were NaNs in the input.• seek(origin = "current") incorrectly reported it was notimplemented for a gzfile() connection.• c(), unlist(), cbind() and rbind() could silently overflow themaximum vector length and cause a segfault. (PR#14571)• The fonts argument to X11(type = "Xlib") was being ignored.• Reading (e.g. with readBin()) from a raw connection was notadvancing the pointer, so successive reads would read the samevalue. (Spotted by Bill Dunlap.)• Parsed text containing embedded newlines was printed incorrectlyby as.character.srcref(). (Reported by Hadley Wickham.)• decompose() used with a series of a non-integer number of periodsreturned a seasonal component shorter than the original series.(Reported by Rob Hyndman.)• fields = list() failed for setRefClass(). (Reported by MichaelLawrence.)• Reference classes could not redefine an inherited field which hadclass "ANY". (Reported by Janko Thyson.)• Methods that override previously loaded versions will now beinstalled and called. (Reported by Iago Mosqueira.)• addmargins() called numeric(apos) rather thannumeric(length(apos)).• The HTML help search sometimes produced bad links. (PR#14608)• Command completion will no longer be broken if tail.default() isredefined by the user. (Problem reported by Henrik Bengtsson.)• LaTeX rendering of markup in titles of help pages has beenimproved; in particular, \eqn{} may be used there.• isClass() used its own namespace as the default of the whereargument inadvertently.• Rd conversion to latex mishandled multi-line titles (includingcases where there was a blank line in the \title section). (Itseems this happened only in 2.13.0 patched.)• postscript() with an sRGB colormodel now uses sRGB for rasterimages (in R 2.13.[01] it used uncalibrated RGB).There is no longer an undocumented 21845-pixel limit on rasterimages.CHANGES IN R VERSION 2.13.0:SIGNIFICANT USER-VISIBLE CHANGES:• replicate() (by default) and vapply() (always) now return ahigher-dimensional array instead of a matrix in the case wherethe inner function value is an array of dimension >= 2.• Printing and formatting of floating point numbers is now usingthe correct number of digits, where it previously rarely differedby a few digits. (See “scientific” entry below.) This affects_many_ *.Rout.save checks in packages.NEW FEATURES:• normalizePath() has been moved to the base package (from utils):this is so it can be used by library() and friends.It now does tilde expansion.It gains new arguments winslash (to select the separator onWindows) and mustWork to control the action if a canonical pathcannot be found.• The previously barely documented limit of 256 bytes on a symbolname has been raised to 10,000 bytes (a sanity check). Longsymbol names can sometimes occur when deparsing expressions (forexample, in model.frame).• reformulate() gains a intercept argument.• cmdscale(add = FALSE) now uses the more common definition thatthere is a representation in n-1 or less dimensions, and onlydimensions corresponding to positive eigenvalues are used.(Avoids confusion such as PR#14397.)• Names used by c(), unlist(), cbind() and rbind() are marked withan encoding when this can be ascertained.• R colours are now defined to refer to the sRGB color space.The PDF, PostScript, and Quartz graphics devices record thisfact. X11 (and cairo) and Windows just assume that your screenconforms.• system.file() gains a mustWork argument (suggestion of BillDunlap).• new.env(hash = TRUE) is now the default.• list2env(envir = NULL) defaults to hashing (with a suitably sizedenvironment) for lists of more than 100 elements.• text() gains a formula method.• IQR() now has a type argument which is passed to quantile().• as.vector(), as.double() etc duplicate less when they leave themode unchanged but remove attributes.as.vector(mode = "any") no longer duplicates when it does notremove attributes. This helps memory usage in matrix() andarray().matrix() duplicates less if data is an atomic vector withattributes such as names (but no class).dim(x) <- NULL duplicates less if x has neither dimensions nornames (since this operation removes names and dimnames).• setRepositories() gains an addURLs argument.• chisq.test() now also returns a stdres component, forstandardized residuals (which have unit variance, unlike thePearson residuals).• write.table() and friends gain a fileEncoding argument, tosimplify writing files for use on other OSes (e.g. a spreadsheetintended for Windows or Mac OS X Excel).• Assignment expressions of the form foo::bar(x) <- y andfoo:::bar(x) <- y now work; the replacement functions used arefoo::`bar<-` and foo:::`bar<-`.• Sys.getenv() gains a names argument so Sys.getenv(x, names =FALSE) can replace the common idiom of as.vector(Sys.getenv()).The default has been changed to not name a length-one result.• Lazy loading of environments now preserves attributes and lockedstatus. (The locked status of bindings and active bindings arestill not preserved; this may be addressed in the future).• options("install.lock") may be set to FALSE so thatinstall.packages() defaults to --no-lock installs, or (onWindows) to TRUE so that binary installs implement locking.• sort(partial = p) for large p now tries Shellsort if quicksort isnot appropriate and so works for non-numeric atomic vectors.• sapply() gets a new option simplify = "array" which returns a“higher rank” array instead of just a matrix when FUN() returns adim() length of two or more.replicate() has this option set by default, and vapply() nowbehaves that way internally.• aperm() becomes S3 generic and gets a table method whichpreserves the class.• merge() and as.hclust() methods for objects of class "dendrogram"are now provided.• The character method of as.POSIXlt() now tries to find a formatthat works for all non-NA inputs, not just the first one.• str() now has a method for class "Date" analogous to that forclass "POSIXt".• New function file.link() to create hard links on those filesystems (POSIX, NTFS but not FAT) that support them.• New Summary() group method for class "ordered" implements min(),max() and range() for ordered factors.• mostattributes<-() now consults the "dim" attribute and not thedim() function, making it more useful for objects (such as dataframes) from classes with methods for dim(). It also usesattr<-() in preference to the generics name<-(), dim<-() anddimnames<-(). (Related to PR#14469.)• There is a new option "browserNLdisabled" to disable the use ofan empty (e.g. via the ‘Return’ key) as a synonym for c inbrowser() or n under debug(). (Wish of PR#14472.)• example() gains optional new arguments character.only andgive.lines enabling programmatic exploration.• serialize() and unserialize() are no longer described as‘experimental’. The interface is now regarded as stable,although the serialization format may well change in futurereleases. (serialize() has a new argument version which wouldallow the current format to be written if that happens.)New functions saveRDS() and readRDS() are public versions of the‘internal’ functions .saveRDS() and .readRDS() made available forgeneral use. The dot-name versions remain available as severalpackage authors have made use of them, despite the documentation.readRDS() no longer wraps non-file connections in a call togzcon(), for efficiency (see its documentation).saveRDS() supports compress = "xz".• Many functions when called with a not-open connection will nowensure that the connection is left not-open in the event oferror. These include read.dcf(), dput(), dump(), load(),parse(), readBin(), readChar(), readLines(), save(), writeBin(),writeChar(), writeLines(), .readRDS(), .saveRDS() andtools::parse_Rd(), as well as functions calling these.• Public functions find.package() and path.package() replace theinternal dot-name versions.• The default method for terms() now looks for a "terms" attributeif it does not find a "terms" component, and so works for modelframes.• httpd() handlers receive an additional argument containing thefull request headers as a raw vector (this can be used to parsecookies, multi-part forms etc.). The recommended full signaturefor handlers is therefore function(url, query, body, headers,...).• file.edit() gains a fileEncoding argument to specify the encodingof the file(s).• The format of the HTML package listings has changed. If there ismore than one library tree , a table of links to libraries isprovided at the top and bottom of the page. Where a librarycontains more than 100 packages, an alphabetic index is given atthe top of the section for that library. (As a consequence,package names are now sorted case-insensitively whatever thelocale.)• isSeekable() now returns FALSE on connections which havenon-default encoding. Although documented to record if ‘inprinciple’ the connection supports seeking, it seems safer toreport FALSE when it may not work.• R CMD REMOVE and remove.packages() now remove file R.css whenremoving all remaining packages in a library tree. (Related tothe wish of PR#14475: note that this file is no longerinstalled.)• unzip() now has a unzip argument like zip.file.extract(). Thisallows an external unzip program to be used, which can be usefulto access features supported by Info-ZIP's unzip version 6 whichis now becoming more widely available.• There is a simple zip() function, as wrapper for an external zipcommand.• bzfile() connections can now read from concatenated bzip2 files(including files written with bzfile(open = "a")) and filescreated by some other compressors (such as the example ofPR#14479).• The primitive function c() is now of type BUILTIN.• plot(<dendrogram>, .., nodePar=*) now obeys an optional xpdspecification (allowing clipping to be turned off completely).• nls(algorithm="port") now shares more code with nlminb(), and ismore consistent with the other nls() algorithms in its returnvalue.• xz has been updated to 5.0.1 (very minor bugfix release).• image() has gained a logical useRaster argument allowing it touse a bitmap raster for plotting a regular grid instead ofpolygons. This can be more efficient, but may not be supported byall devices. The default is FALSE.• list.files()/dir() gains a new argument include.dirs() to includedirectories in the listing when recursive = TRUE.• New function list.dirs() lists all directories, (even emptyones).• file.copy() now (by default) copies read/write/executepermissions on files, moderated by the current setting ofSys.umask().• Sys.umask() now accepts mode = NA and returns the current umaskvalue (visibly) without changing it.• There is a ! method for classes "octmode" and "hexmode": thisallows xor(a, b) to work if both a and b are from one of thoseclasses.• as.raster() no longer fails for vectors or matrices containingNAs.• New hook "before.new.plot" allows functions to be run just beforeadvancing the frame in plot.new, which is potentially useful forcustom figure layout implementations.• Package tools has a new function compactPDF() to try to reducethe size of PDF files _via_ qpdf or gs.• tar() has a new argument extra_flags.• dotchart() accepts more general objects x such as 1D tables whichcan be coerced by as.numeric() to a numeric vector, with awarning since that might not be appropriate.• The previously internal function create.post() is now exportedfrom utils, and the documentation for bug.report() andhelp.request() now refer to that for create.post().It has a new method = "mailto" on Unix-alikes similar to that onWindows: it invokes a default mailer via open (Mac OS X) orxdg-open or the default browser (elsewhere).The default for ccaddress is now getOption("ccaddress") which isby default unset: using the username as a mailing addressnowadays rarely works as expected.• The default for options("mailer") is now "mailto" on allplatforms.• unlink() now does tilde-expansion (like most other filefunctions).• file.rename() now allows vector arguments (of the same length).• The "glm" method for logLik() now returns an "nobs" attribute(which stats4::BIC() assumed it did).The "nls" method for logLik() gave incorrect results for zeroweights.• There is a new generic function nobs() in package stats, toextract from model objects a suitable value for use in BICcalculations. An S4 generic derived from it is defined inpackage stats4.• Code for S4 reference-class methods is now examined for possibleerrors in non-local assignments.• findClasses, getGeneric, findMethods and hasMethods are revisedto deal consistently with the package= argument and be consistentwith soft namespace policy for finding objects.• tools::Rdiff() now has the option to return not only the statusbut a character vector of observed differences (which are stillby default sent to stdout).• The startup environment variables R_ENVIRON_USER, R_ENVIRON,R_PROFILE_USER and R_PROFILE are now treated more consistently.In all cases an empty value is considered to be set and will stopthe default being used, and for the last two tilde expansion isperformed on the file name. (Note that setting an empty value isprobably impossible on Windows.)• Using R --no-environ CMD, R --no-site-file CMD or R--no-init-file CMD sets environment variables so these settingsare passed on to child R processes, notably those run by INSTALL,check and build. R --vanilla CMD sets these three options (butnot --no-restore).• smooth.spline() is somewhat faster. With cv=NA it allows someleverage computations to be skipped,• The internal (C) function scientific(), at the heart of R'sformat.info(x), format(x), print(x), etc, for numeric x, has beenre-written in order to provide slightly more correct results,fixing PR#14491, notably in border cases including when digits >=16, thanks to substantial contributions (code and experiments)from Petr Savicky. This affects a noticeable amount of numericoutput from R.• A new function grepRaw() has been introduced for finding subsetsof raw vectors. It supports both literal searches and regularexpressions.• Package compiler is now provided as a standard package. See?compiler::compile for information on how to use the compiler.This package implements a byte code compiler for R: by defaultthe compiler is not used in this release. See the ‘RInstallation and Administration Manual’ for how to compile thebase and recommended packages.• Providing an exportPattern directive in a NAMESPACE file nowcauses classes to be exported according to the same pattern, forexample the default from package.skeleton() to specify all namesstarting with a letter. An explicit directive toexportClassPattern will still over-ride.• There is an additional marked encoding "bytes" for characterstrings. This is intended to be used for non-ASCII strings whichshould be treated as a set of bytes, and never re-encoded as ifthey were in the encoding of the current locale: useBytes = TRUEis automatically selected in functions such as writeBin(),writeLines(), grep() and strsplit().Only a few character operations are supported (such as substr()).Printing, format() and cat() will represent non-ASCII bytes insuch strings by a \xab escape.• The new function removeSource() removes the internally storedsource from a function.• "srcref" attributes now include two additional line numbervalues, recording the line numbers in the order they were parsed.• New functions have been added for source reference access:getSrcFilename(), getSrcDirectory(), getSrcLocation() andgetSrcref().• Sys.chmod() has an extra argument use_umask which defaults totrue and restricts the file mode by the current setting of umask.This means that all the R functions which manipulatefile/directory permissions by default respect umask, notably RCMD INSTALL.• tempfile() has an extra argument fileext to create a temporaryfilename with a specified extension. (Suggestion and initialimplementation by Dirk Eddelbuettel.)There are improvements in the way Sweave() and Stangle() handlenon-ASCII vignette sources, especially in a UTF-8 locale: see‘Writing R Extensions’ which now has a subsection on this topic.• factanal() now returns the rotation matrix if a rotation such as"promax" is used, and hence factor correlations are displayed.(Wish of PR#12754.)• The gctorture2() function provides a more refined interface tothe GC torture process. Environment variables R_GCTORTURE,R_GCTORTURE_WAIT, and R_GCTORTURE_INHIBIT_RELEASE can also beused to control the GC torture process.• file.copy(from, to) no longer regards it as an error to supply azero-length from: it now simply does nothing.• rstandard.glm() gains a type argument which can be used torequest standardized Pearson residuals.• A start on a Turkish translation, thanks to Murat Alkan.• .libPaths() calls normalizePath(winslash = "/") on the paths:this helps (usually) to present them in a user-friendly form andshould detect duplicate paths accessed via different symboliclinks.• download.file() can be now used with external methods even ifthere are spaces in the URL or the target filename.• The first formal argument of .C(), .Fortran(), .Call() and.External() is now referred to a .NAME rather than name: howeveractual calls should have an unnamed first argument.SWEAVE CHANGES:• Sweave() has options to produce PNG and JPEG figures, and to usea custom function to open a graphics device (see ?RweaveLatex).(Based in part on the contribution of PR#14418.)• The default for Sweave() is to produce only PDF figures (ratherthan both EPS and PDF).• Environment variable SWEAVE_OPTIONS can be used to supplydefaults for existing or new options to be applied after theSweave driver setup has been run.• The Sweave manual is now included as a vignette in the utilspackage.• Sweave() handles keep.source=TRUE much better: it could duplicatesome lines and omit comments. (Reported by John Maindonald andothers.)C-LEVEL FACILITIES:• Because they use a C99 interface which a C++ compiler is notrequired to support, Rvprintf and REvprintf are only defined byR_ext/Print.h in C++ code if the macro R_USE_C99_IN_CXX isdefined when it is included.• pythag duplicated the C99 function hypot. It is no longerprovided, but is used as a substitute for hypot in the veryunlikely event that the latter is not available.• R_inspect(obj) and R_inspect3(obj, deep, pvec) are (hidden)C-level entry points to the internal inspect function and can beused for C-level debugging (e.g., in conjunction with the pcommand in gdb).• Compiling R with --enable-strict-barrier now also enablesadditional checking for use of unprotected objects. Incombination with gctorture() or gctorture2() and a C-leveldebugger this can be useful for tracking down memory protectionissues.UTILITIES:• R CMD Rdiff is now implemented in R on Unix-alikes (as it hasbeen on Windows since R 2.12.0).• R CMD build no longer does any cleaning in the supplied packagedirectory: all the cleaning is done in the copy.It has a new option --install-args to pass arguments to R CMDINSTALL for --build (but not when installing to rebuildvignettes).There is new option, --resave-data, to calltools::resaveRdaFiles() on the data directory, to compresstabular files (.tab, .csv etc) and to convert .R files to .rdafiles. The default, --resave-data=gzip, is to do so in a waycompatible even with years-old versions of R, but bettercompression is given by --resave-data=best, requiring R >=2.10.0.It now adds a datalist file for data directories of more than1Mb.Patterns in .Rbuildignore are now also matched against alldirectory names (including those of empty directories).There is a new option, --compact-vignettes, to try reducing thesize of PDF files in the inst/doc directory. Currently thistries qpdf: other options may be used in future.When re-building vignettes and a inst/doc/Makefile file is found,make clean is run if the makefile has a clean: target.After re-building vignettes the default clean-up operation willremove any directories (and not just files) created during theprocess: e.g. one package created a .R_cache directory.Empty directories are now removed unless the option--keep-empty-dirs is given (and a few packages do deliberatelyinclude empty directories).If there is a field BuildVignettes in the package DESCRIPTIONfile with a false value, re-building the vignettes is skipped.• R CMD check now also checks for filenames that arecase-insensitive matches to Windows' reserved file names withextensions, such as nul.Rd, as these have caused problems on someWindows systems.It checks for inefficiently saved data/*.rda and data/*.RDatafiles, and reports on those large than 100Kb. A more completecheck (including of the type of compression, but potentially muchslower) can be switched on by setting environment variable_R_CHECK_COMPACT_DATA2_ to TRUE.The types of files in the data directory are now checked, aspackages are _still_ misusing it for non-R data files.It now extracts and runs the R code for each vignette in aseparate directory and R process: this is done in the package'sdeclared encoding. Rather than call tools::checkVignettes(), itcalls tools::buildVignettes() to see if the vignettes can bere-built as they would be by R CMD build. Option --use-valgrindnow applies only to these runs, and not when running code torebuild the vignettes. This version does a much better job ofsuppressing output from successful vignette tests.The 00check.log file is a more complete record of what is outputto stdout: in particular contains more details of the tests.It now checks all syntactically valid Rd usage entries, and warnsabout assignments (unless these give the usage of replacementfunctions)..tar.xz compressed tarballs are now allowed, if tar supports them(and setting environment variable TAR to internal ensures so onall platforms).• R CMD check now warns if it finds inst/doc/makefile, and R CMDbuild renames such a file to inst/doc/Makefile.INSTALLATION:• Installing R no longer tries to find perl, and R CMD no longertries to substitute a full path for awk nor perl - this was alegacy from the days when they were used by R itself. Because acouple of packages do use awk, it is set as the make (rather thanenvironment) variable AWK.• make check will now fail if there are differences from thereference output when testing package examples and if environmentvariable R_STRICT_PACKAGE_CHECK is set to a true value.• The C99 double complex type is now required.The C99 complex trigonometric functions (such as csin) are notcurrently required (FreeBSD lacks most of them): substitutes areused if they are missing.• The C99 system call va_copy is now required.• If environment variable R_LD_LIBRARY_PATH is set duringconfiguration (for example in config.site) it is used unchangedin file etc/ldpaths rather than being appended to.• configure looks for support for OpenMP and if found compiles Rwith appropriate flags and also makes them available for use inpackages: see ‘Writing R Extensions’.This is currently experimental, and is only used in R with asingle thread for colSums() and colMeans(). Expect it to be morewidely used in later versions of R.This can be disabled by the --disable-openmp flag.PACKAGE INSTALLATION:• R CMD INSTALL --clean now removes copies of a src directory whichare created when multiple sub-architectures are in use.(Following a comment from Berwin Turlach.)• File R.css is now installed on a per-package basis (in thepackage's html directory) rather than in each library tree, andthis is used for all the HTML pages in the package. This helpswhen installing packages with static HTML pages for use on awebserver. It will also allow future versions of R to usedifferent stylesheets for the packages they install.• A top-level file .Rinstignore in the package sources can list (inthe same way as .Rbuildignore) files under inst that should notbe installed. (Why should there be any such files? Because allthe files needed to re-build vignettes need to be under inst/doc,but they may not need to be installed.)• R CMD INSTALL has a new option --compact-docs to compact any PDFsunder the inst/doc directory. Currently this uses qpdf, whichmust be installed (see ‘Writing R Extensions’).• There is a new option --lock which can be used to cancel theeffect of --no-lock or --pkglock earlier on the command line.• Option --pkglock can now be used with more than one package, andis now the default if only one package is specified.• Argument lock of install.packages() can now be use for Mac binaryinstalls as well as for Windows ones. The value "pkglock" is nowaccepted, as well as TRUE and FALSE (the default).• There is a new option --no-clean-on-error for R CMD INSTALL toretain a partially installed package for forensic analysis.• Packages with names ending in . are not portable since Windowsdoes not work correctly with such directory names. This is nowwarned about in R CMD check, and will not be allowed in R 2.14.x.• The vignette indices are more comprehensive (in the style ofbrowseVignetttes()).DEPRECATED & DEFUNCT:• require(save = TRUE) is defunct, and use of the save argument isdeprecated.• R CMD check --no-latex is defunct: use --no-manual instead.• R CMD Sd2Rd is defunct.• The gamma argument to hsv(), rainbow(), and rgb2hsv() isdeprecated and no longer has any effect.• The previous options for R CMD build --binary (--auto-zip,--use-zip-data and --no-docs) are deprecated (or defunct): usethe new option --install-args instead.• When a character value is used for the EXPR argument in switch(),only a single unnamed alternative value is now allowed.• The wrapper utils::link.html.help() is no longer available.• Zip-ing data sets in packages (and hence R CMD INSTALL options--use-zip-data and --auto-zip, as well as the ZipData: yes fieldin a DESCRIPTION file) is defunct.Installed packages with zip-ed data sets can still be used, but awarning that they should be re-installed will be given.• The ‘experimental’ alternative specification of a namespace via.Export() etc is now defunct.• The option --unsafe to R CMD INSTALL is deprecated: use theidentical option --no-lock instead.• The entry point pythag in Rmath.h is deprecated in favour of theC99 function hypot. A wrapper for hypot is provided for R 2.13.xonly.• Direct access to the "source" attribute of functions isdeprecated; use deparse(fn, control="useSource") to access it,and removeSource(fn) to remove it.• R CMD build --binary is now formally deprecated: R CMD INSTALL--build has long been the preferred alternative.• Single-character package names are deprecated (and R is alreadydisallowed to avoid confusion in Depends: fields).BUG FIXES:• drop.terms and the [ method for class "terms" no longer add backan intercept. (Reported by Niels Hansen.)• aggregate preserves the class of a column (e.g. a date) undersome circumstances where it discarded the class previously.• p.adjust() now always returns a vector result, as documented. Inprevious versions it copied attributes (such as dimensions) fromthe p argument: now it only copies names.• On PDF and PostScript devices, a line width of zero was recordedverbatim and this caused problems for some viewers (a very thinline combined with a non-solid line dash pattern could also causea problem). On these devices, the line width is now limited at0.01 and for very thin lines with complex dash patterns thedevice may force the line dash pattern to be solid. (Reported byJari Oksanen.)• The str() method for class "POSIXt" now gives sensible output for0-length input.• The one- and two-argument complex maths functions failed to warnif NAs were generated (as their numeric analogues do).• Added .requireCachedGenerics to the dont.mind list for library()to avoid warnings about duplicates.• $<-.data.frame messed with the class attribute, breaking any S4subclass. The S4 data.frame class now has its own $<- method,and turns dispatch on for this primitive.• Map() did not look up a character argument f in the correctframe, thanks to lazy evaluation. (PR#14495)• file.copy() did not tilde-expand from and to when to was adirectory. (PR#14507)• It was possible (but very rare) for the loading test in R CMDINSTALL to crash a child R process and so leave around a lockdirectory and a partially installed package. That test is nowdone in a separate process.• plot(<formula>, data=<matrix>,..) now works in more cases;similarly for points(), lines() and text().• edit.default() contained a manual dispatch for matrices (the"matrix" class didn't really exist when it was written). Thiscaused an infinite recursion in the no-GUI case and has now beenremoved.• data.frame(check.rows = TRUE) sometimes worked when it shouldhave detected an error. (PR#14530)• scan(sep= , strip.white=TRUE) sometimes stripped trailing spacesfrom within quoted strings. (The real bug in PR#14522.)• The rank-correlation methods for cor() and cov() with use ="complete.obs" computed the ranks before removing missing values,whereas the documentation implied incomplete cases were removedfirst. (PR#14488)They also failed for 1-row matrices.• The perpendicular adjustment used in placing text and expressionsin the margins of plots was not scaled by par("mex"). (Part ofPR#14532.)• Quartz Cocoa device now catches any Cocoa exceptions that occurduring the creation of the device window to prevent crashes. Italso imposes a limit of 144 ft^2 on the area used by a window tocatch user errors (unit misinterpretation) early.• The browser (invoked by debug(), browser() or otherwise) woulddisplay attributes such as "wholeSrcref" that were intended forinternal use only.• R's internal filename completion now properly handles filenameswith spaces in them even when the readline library is used. Thisresolves PR#14452 provided the internal filename completion isused (e.g., by setting rc.settings(files = TRUE)).• Inside uniroot(f, ...), -Inf function values are now replaced bya maximally *negative* value.• rowsum() could silently over/underflow on integer inputs(reported by Bill Dunlap).• as.matrix() did not handle "dist" objects with zero rows.CHANGES IN R VERSION 2.12.2 patched:NEW FEATURES:• max() and min() work harder to ensure that NA has precedence overNaN, so e.g. min(NaN, NA) is NA. (This was not previouslydocumented except for within a single numeric vector, wherecompiler optimizations often defeated the code.)BUG FIXES:• A change to the C function R_tryEval had broken error messages inS4 method selection; the error message is now printed.• PDF output with a non-RGB color model used RGB for the linestroke color. (PR#14511)• stats4::BIC() assumed without checking that an object of class"logLik" has an "nobs" attribute: glm() fits did not and so BIC()failed for them.• In some circumstances a one-sided mantelhaen.test() reported thep-value for the wrong tail. (PR#14514)• Passing the invalid value lty = NULL to axis() sent an invalidvalue to the graphics device, and might cause the device tosegfault.• Sweave() with concordance=TRUE could lead to invalid PDF files;Sweave.sty has been updated to avoid this.• Non-ASCII characters in the titles of help pages were notrendered properly in some locales, and could cause errors orwarnings.• checkRd() gave a spurious error if the \href macro was used.CHANGES IN R VERSION 2.12.2:SIGNIFICANT USER-VISIBLE CHANGES:• Complex arithmetic (notably z^n for complex z and integer n) gaveincorrect results since R 2.10.0 on platforms without C99 complexsupport. This and some lesser issues in trigonometric functionshave been corrected.Such platforms were rare (we know of Cygwin and FreeBSD).However, because of new compiler optimizations in the way complexarguments are handled, the same code was selected on x86_64 Linuxwith gcc 4.5.x at the default -O2 optimization (but not at -O).• There is a workaround for crashes seen with several packages onsystems using zlib 1.2.5: see the INSTALLATION section.NEW FEATURES:• PCRE has been updated to 8.12 (two bug-fix releases since 8.10).• rep(), seq(), seq.int() and seq_len() report more often when thefirst element is taken of an argument of incorrect length.• The Cocoa back-end for the quartz() graphics device on Mac OS Xprovides a way to disable event loop processing temporarily(useful, e.g., for forked instances of R).• kernel()'s default for m was not appropriate if coef was a set ofcoefficients. (Reported by Pierre Chausse.)• bug.report() has been updated for the current R bug tracker,which does not accept emailed submissions.• R CMD check now checks for the correct use of $(LAPACK_LIBS) (aswell as $(BLAS_LIBS)), since several CRAN recent submissions haveignored ‘Writing R Extensions’.INSTALLATION:• The zlib sources in the distribution are now built with allsymbols remapped: this is intended to avoid problems seen withpackages such as XML and rggobi which link to zlib.so.1 onsystems using zlib 1.2.5.• The default for FFLAGS and FCFLAGS with gfortran on x86_64 Linuxhas been changed back to -g -O2: however, setting -g -O may stillbe needed for gfortran 4.3.x.PACKAGE INSTALLATION:• A LazyDataCompression field in the DESCRIPTION file will be usedto set the value for the --data-compress option of R CMD INSTALL.• Files R/sysdata.rda of more than 1Mb are now stored in thelazyload database using xz compression: this for example halvesthe installed size of package Imap.• R CMD INSTALL now ensures that directories installed from insthave search permission for everyone.It no longer installs files inst/doc/Rplots.ps andinst/doc/Rplots.pdf. These are almost certainly left-overs fromSweave runs, and are often large.DEPRECATED & DEFUNCT:• The ‘experimental’ alternative specification of a namespace via.Export() etc is now deprecated.• zip.file.extract() is now deprecated.• Zip-ing data sets in packages (and hence R CMD INSTALL--use-zip-data and the ZipData: yes field in a DESCRIPTION file)is deprecated: using efficiently compressed .rda images andlazy-loading of data has superseded it.BUG FIXES:• identical() could in rare cases generate a warning aboutnon-pairlist attributes on CHARSXPs. As these are used forinternal purposes, the attribute check should be skipped.(Reported by Niels Richard Hansen).• If the filename extension (usually .Rnw) was not included in acall to Sweave(), source references would not work properly andthe keep.source option failed. (PR#14459)• format.data.frame() now keeps zero character column names.• pretty(x) no longer raises an error when x contains solelynon-finite values. (PR#14468)• The plot.TukeyHSD() function now uses a line width of 0.5 for itsreference lines rather than lwd = 0 (which caused problems forsome PDF and PostScript viewers).• The big.mark argument to prettyNum(), format(), etc. was insertedreversed if it was more than one character long.• R CMD check failed to check the filenames under man for Windows'reserved names.• The "Date" and "POSIXt" methods for seq() could overshoot when towas supplied and by was specified in months or years.• The internal method of untar() now restores hard links as filecopies rather than symbolic links (which did not work forcross-directory links).• unzip() did not handle zip files which contained filepaths withtwo or more leading directories which were not in the zipfile anddid not already exist. (It is unclear if such zipfiles are validand the third-party C code used did not support them, butPR#14462 created one.)• combn(n, m) now behaves more regularly for the border case m = 0.(PR#14473)• The rendering of numbers in plotmath expressions (e.g.expression(10^2)) used the current settings for conversion tostrings rather than setting the defaults, and so could beaffected by what has been done before. (PR#14477)• The methods of napredict() and naresid() for na.action =na.exclude fits did not work correctly in the very rare eventthat every case had been omitted in the fit. (Reported by SimonWood.)• weighted.residuals(drop0=TRUE) returned a vector when theresiduals were a matrix (e.g. those of class "mlm"). (Reportedby Bill Dunlap.)• Package HTML index files <pkg>/html/00Index.html were generatedwith a stylesheet reference that was not correct for staticbrowsing in libraries.• ccf(na.action = na.pass) was not implemented.• The parser accepted some incorrect numeric constants, e.g. 20x2.(Reported by Olaf Mersmann.)• format(*, zero.print) did not always replace the full zero parts.• Fixes for subsetting or subassignment of "raster" objects whennot both i and j are specified.• R CMD INSTALL was not always respecting the ZipData: yes field ofa DESCRIPTION file (although this is frequently incorrectlyspecified for packages with no data or which specify lazy-loadingof data).R CMD INSTALL --use-zip-data was incorrectly implemented as--use-zipdata since R 2.9.0.• source(file, echo=TRUE) could fail if the file contained #linedirectives. It now recovers more gracefully, but may stilldisplay the wrong line if the directive gives incorrectinformation.• atan(1i) returned NaN+Infi (rather than 0+Infi) on platformswithout C99 complex support.• library() failed to cache S4 metadata (unlike loadNamespace())causing failures in S4-using packages without a namespace (e.g.those using reference classes).• The function qlogis(lp, log.p=TRUE) no longer prematurelyoverflows to Inf when exp(lp) is close to 1.• Updating S4 methods for a group generic function requiresresetting the methods tables for the members of the group (patchcontributed by Martin Morgan).• In some circumstances (including for package XML), R CMD INSTALLinstalled version-control directories from source packages.• Added PROTECT calls to some constructed expressions used in Clevel eval calls.• utils:::create.post() (used by bug.report() and help.request())failed to quote arguments to the mailer, and so often failed.• bug.report() was naive about how to extract maintainer emailaddresses from package descriptions, so would often try mailingto incorrect addresses.• debugger() could fail to read the environment of a call to afunction with a ... argument. (Reported by Charlie Roosen.)• prettyNum(c(1i, NA), drop0=TRUE) or str(NA_complex_) now workcorrectly.CHANGES IN R VERSION 2.12.1:NEW FEATURES:• The DVI/PDF reference manual now includes the help pages for allthe standard packages: splines, stats4 and tcltk were previouslyomitted (intentionally).• <URL: http://www.rforge.net> has been added to the default set ofrepositories known to setRepositories().• xz-utils has been updated to version 5.0.0.• reshape() now makes use of sep when forming names duringreshaping to wide format. (PR#14435)• legend() allows the length of lines to be set by the end user_via_ the new argument seg.len.• New S4 reference class utility methods copy(), field(),getRefClass() and getClass() have been added to package methods.• When a character value is used for the EXPR argument in switch(),a warning is given if more than one unnamed alternative value isgiven. This will become an error in R 2.13.0.• StructTS(type = "BSM") now allows series with just two seasons.(Reported by Birgit Erni.)INSTALLATION:• The PDF reference manual is now built as PDF version 1.5 withobject compression, which on platforms for which this is not thedefault (notably MiKTeX) halves its size.• Variable FCLIBS can be set during configuration, for anyadditional library flags needed when linking a shared object withthe Fortran 9x compiler. (Needed with Solaris Studio 12.2.)BUG FIXES:• seq.int() no longer sometimes evaluates arguments twice.(PR#14388)• The data.frame method of format() failed if a column name waslonger than 256 bytes (the maximum length allowed for an R name).• predict(<lm object>, type ="terms", ...) failed if both terms andinterval were specified. (Reported by Bill Dunlap.)Also, if se.fit = TRUE the standard errors were reported for allterms, not just those selected by a non-null terms.• The TRE regular expressions engine could terminate R rather thangive an error when given certain invalid regular expressions.(PR#14398)• cmdscale(eig = TRUE) was documented to return n-1 eigenvalues butin fact only returned k. It now returns all n eigenvalues.cmdscale(add = TRUE) failed to centre the return configurationand sometimes lost the labels on the points. Its return valuewas described wrongly (it is always a list and contains componentac).• promptClass() in package methods now works for reference classesand gives a suitably specialized skeleton of documentation.Also, callSuper() now works via the methods() invocation as wellas for initially specified methods.• download.file() could leave the destination file open if the URLwas not able to be opened. (PR#14414)• Assignment of an environment to functions or as an attribute toother objects now works for S4 subclasses of "environment".• Use of [[<- for S4 subclasses of "environment" generated aninfinite recursion from the method. The method has been replacedby internal code.• In a reference class S4 method, callSuper() now works ininitialize() methods when there is no explicit superclass method.• ! dropped attributes such as names and dimensions from alength-zero argument. (PR#14424)• When list2env() created an environment it was missing a PROTECTcall and so was vulnerable to garbage collection.• Sweave() with keep.source=TRUE dropped comments at the start andend of code chunks. It could also fail when \SweaveInput wascombined with named chunks.• The Fortran code used by nls(algorithm = "port") couldinfinite-loop when compiled with high optimization on a modernversion of gcc, and SAFE_FFLAGS is now used to make this lesslikely. (PR#14427, seen with 32-bit Windows using gcc 4.5.0 usedfrom R 2.12.0.)• sapply() with default simplify = TRUE and mapply() with defaultSIMPLIFY = TRUE wrongly simplified language-like results, as,e.g., in mapply(1:2, c(3,7), FUN = function(i,j) call(':',i,j)).• Backreferences to undefined patterns in [g]sub(pcre = TRUE) couldcause a segfault. (PR#14431)• The format() (and hence the print()) method for class "Date"rounded fractional dates towards zero: it now always rounds themdown.• Reference S4 class creation could generate ambiguous inheritancepatterns under very special circumstances.• [[<- turned S4 subclasses of "environment" into plainenvironments.• Long titles for help pages were truncated in package indices anda few other places.• Additional utilities now work correctly with S4 subclasses of"environment" (rm, locking tools and active bindings).• spec.ar() now also work for the "ols" method. (Reported byHans-Ruedi Kuensch.)• The initialization of objects from S4 subclasses of "environment"now allocates a new environment object.• R CMD check has more protection against (probably erroneous)example or test output which is invalid in the current locale.• qr.X() with column names and pivoting now also pivots the columnnames. (PR#14438)• unit.pmax() and unit.pmin() in package grid gave incorrectresults when all inputs were of length 1. (PR#14443)• The parser for NAMESPACE files ignored misspelled directives,rather than signalling an error. For 2.12.x a warning will beissued, but this will be correctly reported as an error in laterreleases. (Reported by Charles Berry.)• Fix for subsetting of "raster" objects when only one of i or j isspecified.• grid.raster() in package grid did not accept "nativeRaster"objects (like rasterImage() does).• Rendering raster images in PDF output was resetting the clippingregion.• Rendering of raster images on cairo X11 device was wrong,particularly when a small image was being scaled up usinginterpolation.With cairo < 1.6, will be better than before, though still alittle clunky. With cairo >= 1.6, should be sweet as.• Several bugs fixed in read.DIF(): single column inputs causederrors, cells marked as "character" could be converted to othertypes, and (in Windows) copying from the clipboard failed.CHANGES IN R VERSION 2.12.0:NEW FEATURES:• Reading a package's CITATION file now defaults to ASCII ratherthan Latin-1: a package with a non-ASCII CITATION file shoulddeclare an encoding in its DESCRIPTION file and use that encodingfor the CITATION file.• difftime() now defaults to the "tzone" attribute of "POSIXlt"objects rather than to the current timezone as set by the defaultfor the tz argument. (Wish of PR#14182.)• pretty() is now generic, with new methods for "Date" and "POSIXt"classes (based on code contributed by Felix Andrews).• unique() and match() are now faster on character vectors whereall elements are in the global CHARSXP cache and have unmarkedencoding (ASCII). Thanks to Matthew Dowle for suggestingimprovements to the way the hash code is generated in unique.c.• The enquote() utility, in use internally, is exported now.• .C() and .Fortran() now map non-zero return values (other thanNA_LOGICAL) for logical vectors to TRUE: it has been an implicitassumption that they are treated as true.• The print() methods for "glm" and "lm" objects now insertlinebreaks in long calls in the same way that the print() methodsfor "summary.[g]lm" objects have long done. This does change thelayout of the examples for a number of packages, e.g. MASS.(PR#14250)• constrOptim() can now be used with method "SANN". (PR#14245)It gains an argument hessian to be passed to optim(), whichallows all the ... arguments to be intended for f() and grad().(PR#14071)• curve() now allows expr to be an object of mode "expression" aswell as "call" and "function".• The "POSIX[cl]t" methods for Axis() have been replaced by asingle method for "POSIXt".There are no longer separate plot() methods for "POSIX[cl]t" and"Date": the default method has been able to handle those classesfor a long time. This _inter alia_ allows a single date-timeobject to be supplied, the wish of PR#14016.The methods had a different default ("") for xlab.• Classes "POSIXct", "POSIXlt" and "difftime" have generators.POSIXct(), .POSIXlt() and .difftime(). Package authors areadvised to make use of them (they are available from R 2.11.0) toproof against planned future changes to the classes.The ordering of the classes has been changed, so "POSIXt" is nowthe second class. See the document ‘Updating packages forchanges in R 2.12.x’ on <URL: http://developer.r-project.org> forthe consequences for a handful of CRAN packages.• The "POSIXct" method of as.Date() allows a timezone to bespecified (but still defaults to UTC).• New list2env() utility function as an inverse ofas.list(<environment>) and for fast multi-assign() to existingenvironment. as.environment() is now generic and uses list2env()as list method.• There are several small changes to output which ‘zap’ smallnumbers, e.g. in printing quantiles of residuals in summariesfrom "lm" and "glm" fits, and in test statistics inprint.anova().• Special names such as "dim", "names", etc, are now allowed asslot names of S4 classes, with "class" the only remainingexception.• File .Renviron can have architecture-specific versions such as.Renviron.i386 on systems with sub-architectures.• installed.packages() has a new argument subarch to filter onsub-architecture.• The summary() method for packageStatus() now has a separateprint() method.• The default summary() method returns an object inheriting fromclass "summaryDefault" which has a separate print() method thatcalls zapsmall() for numeric/complex values.• The startup message now includes the platform and if used,sub-architecture: this is useful where different(sub-)architectures run on the same OS.• The getGraphicsEvent() mechanism now allows multiple windows toreturn graphics events, through the new functionssetGraphicsEventHandlers(), setGraphicsEventEnv(), andgetGraphicsEventEnv(). (Currently implemented in the windows()and X11() devices.)• tools::texi2dvi() gains an index argument, mainly for use by RCMD Rd2pdf.It avoids the use of texindy by texinfo's texi2dvi >= 1.157,since that does not emulate 'makeindex' well enough to avoidproblems with special characters (such as (, {, !) in indices.• The ability of readLines() and scan() to re-encode inputs tomarked UTF-8 strings on Windows since R 2.7.0 is extended tonon-UTF-8 locales on other OSes.• scan() gains a fileEncoding argument to match read.table().• points() and lines() gain "table" methods to match plot(). (Wishof PR#10472.)• Sys.chmod() allows argument mode to be a vector, recycled alongpaths.• There are |, & and xor() methods for classes "octmode" and"hexmode", which work bitwise.• Environment variables R_DVIPSCMD, R_LATEXCMD, R_MAKEINDEXCMD,R_PDFLATEXCMD are no longer used nor set in an R session. (Withthe move to tools::texi2dvi(), the conventional environmentvariables LATEX, MAKEINDEX and PDFLATEX will be used.options("dvipscmd") defaults to the value of DVIPS, then to"dvips".)• New function isatty() to see if terminal connections areredirected.• summaryRprof() returns the sampling interval in componentsample.interval and only returns in by.self data for functionswith non-zero self times.• print(x) and str(x) now indicate if an empty list x is named.• install.packages() and remove.packages() with lib unspecified andmultiple libraries in .libPaths() inform the user of the librarylocation used with a message rather than a warning.• There is limited support for multiple compressed streams on afile: all of [bgx]zfile() allow streams to be appended to anexisting file, but bzfile() reads only the first stream.• Function person() in package utils now uses a given/family schemein preference to first/middle/last, is vectorized to handle anarbitrary number of persons, and gains a role argument to specifyperson roles using a controlled vocabulary (the MARC relatorterms).• Package utils adds a new "bibentry" class for representing andmanipulating bibliographic information in enhanced BibTeX style,unifying and enhancing the previously existing mechanisms.• A bibstyle() function has been added to the tools package withdefault JSS style for rendering "bibentry" objects, and amechanism for registering other rendering styles.• Several aspects of the display of text help are now customizableusing the new Rd2txt_options() function.options("help_text_width") is no longer used.• Added \href tag to the Rd format, to allow hyperlinks to URLswithout displaying the full URL.• Added \newcommand and \renewcommand tags to the Rd format, toallow user-defined macros.• New toRd() generic in the tools package to convert objects tofragments of Rd code, and added "fragment" argument to Rd2txt(),Rd2HTML(), and Rd2latex() to support it.• Directory R_HOME/share/texmf now follows the TDS conventions, socan be set as a texmf tree (‘root directory’ in MiKTeX parlance).• S3 generic functions now use correct S4 inheritance whendispatching on an S4 object. See ?Methods, section on “Methodsfor S3 Generic Functions” for recommendations and details.• format.pval() gains a ... argument to pass arguments such asnsmall to format(). (Wish of PR#9574)• legend() supports title.adj. (Wish of PR#13415)• Added support for subsetting "raster" objects, plus assigning toa subset, conversion to a matrix (of colour strings), andcomparisons (== and !=).• Added a new parseLatex() function (and related functionsdeparseLatex() and latexToUtf8()) to support conversion ofbibliographic entries for display in R.• Text rendering of \itemize in help uses a Unicode bullet in UTF-8and most single-byte Windows locales.• Added support for polygons with holes to the graphics engine.This is implemented for the pdf(), postscript(),x11(type="cairo"), windows(), and quartz() devices (andassociated raster formats), but not for x11(type="Xlib") orxfig() or pictex(). The user-level interface is the polypath()function in graphics and grid.path() in grid.• File NEWS is now generated at installation with a slightlydifferent format: it will be in UTF-8 on platforms using UTF-8,and otherwise in ASCII. There is also a PDF version, NEWS.pdf,installed at the top-level of the R distribution.• kmeans(x, 1) now works. Further, kmeans now returns between andtotal sum of squares.• arrayInd() and which() gain an argument useNames. For arrayInd,the default is now false, for speed reasons.• As is done for closures, the default print method for the formulaclass now displays the associated environment if it is not theglobal environment.• A new facility has been added for inserting code into a packagewithout re-installing it, to facilitate testing changes which canbe selectively added and backed out. See ?insertSource.• New function readRenviron to (re-)read files in the format of~/.Renviron and Renviron.site.• require() will now return FALSE (and not fail) if loading thepackage or one of its dependencies fails.• aperm() now allows argument perm to be a character vector whenthe array has named dimnames (as the results of table() callsdo). Similarly, array() allows MARGIN to be a character vector.(Based on suggestions of Michael Lachmann.)• Package utils now exports and documents functionsaspell_package_Rd_files() and aspell_package_vignettes() forspell checking package Rd files and vignettes using Aspell,Ispell or Hunspell.• Package news can now be given in Rd format, and news() prefersthese inst/NEWS.Rd files to old-style plain text NEWS orinst/NEWS files.• New simple function packageVersion().• The PCRE library has been updated to version 8.10.• The standard Unix-alike terminal interface declares its name toreadline as 'R', so that can be used for conditional sections in~/.inputrc files.• ‘Writing R Extensions’ now stresses that the standard sections in.Rd files (other than \alias, \keyword and \note) are intended tobe unique, and the conversion tools now drop duplicates with awarning.The .Rd conversion tools also warn about an unrecognized type ina \docType section.• ecdf() objects now have a quantile() method.• format() methods for date-time objects now attempt to make use ofa "tzone" attribute with "%Z" and "%z" formats, but it is notalways possible. (Wish of PR#14358.)• tools::texi2dvi(file, clean = TRUE) now works in more cases (e.g.where emulation is used and when file is not in the currentdirectory).• New function droplevels() to remove unused factor levels.• system(command, intern = TRUE) now gives an error on a Unix-alike(as well as on Windows) if command cannot be run. It reports anon-success exit status from running command as a warning.On a Unix-alike an attempt is made to return the actual exitstatus of the command in system(intern = FALSE): previously thishad been system-dependent but on POSIX-compliant systems thevalue return was 256 times the status.• system() has a new argument ignore.stdout which can be used to(portably) ignore standard output.• system(intern = TRUE) and pipe() connections are guaranteed to beavailable on all builds of R.• Sys.which() has been altered to return "" if the command is notfound (even on Solaris).• A facility for defining reference-based S4 classes (in the OOPstyle of Java, C++, etc.) has been added experimentally topackage methods; see ?ReferenceClasses.• The predict method for "loess" fits gains an na.action argumentwhich defaults to na.pass rather than the previous default ofna.omit.Predictions from "loess" fits are now named from the row names ofnewdata.• Parsing errors detected during Sweave() processing will now bereported referencing their original location in the source file.• New adjustcolor() utility, e.g., for simple translucent colorschemes.• qr() now has a trivial lm method with a simple (fast) validitycheck.• An experimental new programming model has been added to packagemethods for reference (OOP-style) classes and methods. See?ReferenceClasses.• bzip2 has been updated to version 1.0.6 (bug-fix release).--with-system-bzlib now requires at least version 1.0.6.• R now provides jss.cls and jss.bst (the class and bib style filefor the Journal of Statistical Software) as well as RJournal.biband Rnews.bib, and R CMD ensures that the .bst and .bib files arefound by BibTeX.• Functions using the TAR environment variable no longer quote thevalue when making system calls. This allows values such as tar--force-local, but does require additional quotes in, e.g., TAR ="'/path with spaces/mytar'".DEPRECATED & DEFUNCT:• Supplying the parser with a character string containing bothoctal/hex and Unicode escapes is now an error.• File extension .C for C++ code files in packages is now defunct.• R CMD check no longer supports configuration files containingPerl configuration variables: use the environment variablesdocumented in ‘R Internals’ instead.• The save argument of require() now defaults to FALSE and save =TRUE is now deprecated. (This facility is very rarely actuallyused, and was superseded by the Depends field of the DESCRIPTIONfile long ago.)• R CMD check --no-latex is deprecated in favour of --no-manual.• R CMD Sd2Rd is formally deprecated and will be removed in R2.13.0.PACKAGE INSTALLATION:• install.packages() has a new argument libs_only to optionallypass --libs-only to R CMD INSTALL and works analogously forWindows binary installs (to add support for 64- or 32-bitWindows).• When sub-architectures are in use, the installed architecturesare recorded in the Archs field of the DESCRIPTION file. Thereis a new default filter, "subarch", in available.packages() tomake use of this.Code is compiled in a copy of the src directory when a package isinstalled for more than one sub-architecture: this avoid problemswith cleaning the sources between building sub-architectures.• R CMD INSTALL --libs-only no longer overrides the setting oflocking, so a previous version of the package will be restoredunless --no-lock is specified.UTILITIES:• R CMD Rprof|build|check are now based on R rather than Perlscripts. The only remaining Perl scripts are the deprecated RCMD Sd2Rd and install-info.pl (used only if install-info is notfound) as well as some maintainer-mode-only scripts.*NB:* because these have been completely rewritten, users shouldnot expect undocumented details of previous implementations tohave been duplicated.R CMD no longer manipulates the environment variables PERL5LIBand PERLLIB.• R CMD check has a new argument --extra-arch to confine tests tothose needed to check an additional sub-architecture.Its check for “Subdirectory 'inst' contains no files” is morethorough: it looks for files, and warns if there are only emptydirectories.Environment variables such as R_LIBS and those used forcustomization can be set for the duration of checking _via_ afile ~/.R/check.Renviron (in the format used by .Renviron, andwith sub-architecture specific versions such as~/.R/check.Renviron.i386 taking precedence).There are new options --multiarch to check the package under allof the installed sub-architectures and --no-multiarch to confinechecking to the sub-architecture under which check is invoked.If neither option is supplied, a test is done of installedsub-architectures and all those which can be run on the currentOS are used.Unless multiple sub-architectures are selected, the install doneby check for testing purposes is only of the currentsub-architecture (_via_ R CMD INSTALL --no-multiarch).It will skip the check for non-ascii characters in code or dataif the environment variables _R_CHECK_ASCII_CODE_ or_R_CHECK_ASCII_DATA_ are respectively set to FALSE. (Suggestionof Vince Carey.)• R CMD build no longer creates an INDEX file (R CMD INSTALL doesso), and --force removes (rather than overwrites) an existingINDEX file.It supports a file ~/.R/build.Renviron analogously to check.It now runs build-time \Sexpr expressions in help files.• R CMD Rd2dvi makes use of tools::texi2dvi() to process thepackage manual. It is now implemented entirely in R (rather thanpartially as a shell script).• R CMD Rprof now uses utils::summaryRprof() rather than Perl. Ithas new arguments to select one of the tables and to limit thenumber of entries printed.• R CMD Sweave now runs R with --vanilla so the environment settingof R_LIBS will always be used.C-LEVEL FACILITIES:• lang5() and lang6() (in addition to pre-existing lang[1-4]())convenience functions for easier construction of eval() calls.If you have your own definition, do wrap it inside #ifndef lang5.... #endif to keep it working with old and new R.• Header R.h now includes only the C headers it itself needs, henceno longer includes errno.h. (This helps avoid problems when itis included from C++ source files.)• Headers Rinternals.h and R_ext/Print.h include the C++ versionsof stdio.h and stdarg.h respectively if included from a C++source file.INSTALLATION:• A C99 compiler is now required, and more C99 language featureswill be used in the R sources.• Tcl/Tk >= 8.4 is now required (increased from 8.3).• System functions access, chdir and getcwd are now essential toconfigure R. (In practice they have been required for sometime.)• make check compares the output of the examples from several ofthe base packages to reference output rather than the previousoutput (if any). Expect some differences due to differences infloating-point computations between platforms.• File NEWS is no longer in the sources, but generated as part ofthe installation. The primary source for changes is nowdoc/NEWS.Rd.• The popen system call is now required to build R. This ensuresthe availability of system(intern = TRUE), pipe() connections andprinting from postscript().• The pkg-config file libR.pc now also works when R is installedusing a sub-architecture.• R has always required a BLAS that conforms to IE60559 arithmetic,but after discovery of more real-world problems caused by a BLASthat did not, this is tested more thoroughly in this version.BUG FIXES:• Calls to selectMethod() by default no longer cache inheritedmethods. This could previously corrupt methods used by as().• The densities of non-central chi-squared are now more accurate insome cases in the extreme tails, e.g. dchisq(2000, 2, 1000), as aseries expansion was truncated too early. (PR#14105)• pt() is more accurate in the left tail for ncp large, e.g.pt(-1000, 3, 200). (PR#14069)• The default C function (R_binary) for binary ops now sets the S4bit in the result if either argument is an S4 object. (PR#13209)• source(echo=TRUE) failed to echo comments that followed the laststatement in a file.• S4 classes that contained one of "matrix", "array" or "ts" andalso another class now accept superclass objects in new(). Alsofixes failure to call validObject() for these classes.• Conditional inheritance defined by argument test inmethods::setIs() will no longer be used in S4 method selection(caching these methods could give incorrect results). See?setIs.• The signature of an implicit generic is now used by setGeneric()when that does not use a definition nor explicitly set asignature.• A bug in callNextMethod() for some examples with "..." in thearguments has been fixed. See filesrc/library/methods/tests/nextWithDots.R in the sources.• match(x, table) (and hence %in%) now treat "POSIXlt" consistentlywith, e.g., "POSIXct".• Built-in code dealing with environments (get(), assign(),parent.env(), is.environment() and others) now behaveconsistently to recognize S4 subclasses; is.name() alsorecognizes subclasses.• The abs.tol control parameter to nlminb() now defaults to 0.0 toavoid false declarations of convergence in objective functionsthat may go negative.• The standard Unix-alike termination dialog to ask whether to savethe workspace takes a EOF response as n to avoid problems with adamaged terminal connection. (PR#14332)• Added warn.unused argument to hist.default() to allow suppressionof spurious warnings about graphical parameters used withplot=FALSE. (PR#14341)• predict.lm(), summary.lm(), and indeed lm() itself had issueswith residual DF in zero-weighted cases (the latter two only inconnection with empty models). (Thanks to Bill Dunlap forspotting the predict() case.)• aperm() treated resize = NA as resize = TRUE.• constrOptim() now has an improved convergence criterion, notablyfor cases where the minimum was (very close to) zero; further,other tweaks inspired from code proposals by Ravi Varadhan.• Rendering of S3 and S4 methods in man pages has been correctedand made consistent across output formats.• Simple markup is now allowed in \title sections in .Rd files.• The behaviour of as.logical() on factors (to use the levels) waslost in R 2.6.0 and has been restored.• prompt() did not backquote some default arguments in the \usagesection. (Reported by Claudia Beleites.)• writeBin() disallows attempts to write 2GB or more in a singlecall. (PR#14362)• new() and getClass() will now work if Class is a subclass of"classRepresentation" and should also be faster in typical calls.• The summary() method for data frames makes a better job of namescontaining characters invalid in the current locale.• [[ sub-assignment for factors could create an invalid factor(reported by Bill Dunlap).• Negate(f) would not evaluate argument f until first use ofreturned function (reported by Olaf Mersmann).• quietly=FALSE is now also an optional argument of library(), andconsequently, quietly is now propagated also for loadingdependent packages, e.g., in require(*, quietly=TRUE).• If the loop variable in a for loop was deleted, it would berecreated as a global variable. (Reported by Radford Neal; thefix includes his optimizations as well.)• Task callbacks could report the wrong expression when the taskinvolved parsing new code. (PR#14368)• getNamespaceVersion() failed; this was an accidental change in2.11.0. (PR#14374)• identical() returned FALSE for external pointer objects even whenthe pointer addresses were the same.• L$a@x[] <- val did not duplicate in a case it should have.• tempfile() now always gives a random file name (even if thedirectory is specified) when called directly after startup andbefore the R RNG had been used. (PR#14381)• quantile(type=6) behaved inconsistently. (PR#14383)• backSpline(.) behaved incorrectly when the knot sequence wasdecreasing. (PR#14386)• The reference BLAS included in R was assuming that 0*x and x*0were always zero (whereas they could be NA or NaN in IEC 60559arithmetic). This was seen in results from tcrossprod, and forexample that log(0) %*% 0 gave 0.• The calculation of whether text was completely outside the deviceregion (in which case, you draw nothing) was wrong for screendevices (which have [0, 0] at top-left). The symptom was (long)text disappearing when resizing a screen window (to make itsmaller). (PR#14391)• model.frame(drop.unused.levels = TRUE) did not take into accountNA values of factors when deciding to drop levels. (PR#14393)• library.dynam.unload required an absolute path for libpath.(PR#14385)Both library() and loadNamespace() now record absolute paths foruse by searchpaths() and getNamespaceInfo(ns, "path").• The self-starting model NLSstClosestX failed if some deviationwas exactly zero. (PR#14384)• X11(type = "cairo") (and other devices such as png usingcairographics) and which use Pango font selection now work arounda bug in Pango when very small fonts (those with sizes between 0and 1 in Pango's internal units) are requested. (PR#14369)• Added workaround for the font problem with X11(type = "cairo")and similar on Mac OS X whereby italic and bold styles wereinterchanged. (PR#13463 amongst many other reports.)• source(chdir = TRUE) failed to reset the working directory if itcould not be determined - that is now an error.• Fix for crash of example(rasterImage) on x11(type="Xlib").• Force Quartz to bring the on-screen display up-to-dateimmediately before the snapshot is taken by grid.cap() in theCocoa implementation. (PR#14260)• model.frame had an unstated 500 byte limit on variable names.(Example reported by Terry Therneau.)• The 256-byte limit on names is now documented.• Subassignment by [, [[ or $ on an expression object with valueNULL coerced the object to a list.CHANGES IN R VERSION 2.11.1 patched:NEW FEATURES:• install.packages() has a new optional argument INSTALL_opts whichcan be used to pass options to R CMD INSTALL for source-packageinstalls.• R CMD check now runs the package-specific tests with LANGUAGE=ento facilitate comparison to .Rout.save files.• sessionInfo() gives more detailed platform information, including32/64-bit and the sub-architecture if one is used.DEPRECATED & DEFUNCT:• The use of Perl configuration variables for R CMD check (aspreviously documented in ‘Writing R Extensions’) is deprecatedand will be removed in R 2.12.0. Use the environment variablesdocumented in ‘R Internals’ instead.BUG FIXES:• R CMD Rd2dvi failed if run from a path containing space(s). Thisalso affected R CMD check, which calls Rd2dvi.• stripchart() could fail with an empty factor level. (PR#14317)• Text help rendering of \tabular{} has been improved: under somecircumstances leading blank columns were not rendered.• strsplit(x, fixed=TRUE) marked UTF-8 strings with the localencoding when no splits were found.• weighted.mean(NA, na.rm=TRUE) and similar now returns NaN again,as it did prior to R 2.10.0.• R CMD had a typo in its detection of whether the environmentvariable TEXINPUTS was set (reported by Martin Morgan).• The command-line parser could mistake --file=size... for one ofthe options for setting limits for Ncells or Vcells.• The internal strptime() could corrupt its copy of the timezonewhich would then lead to spurious warnings. (PR#14338)• dir.create(recursive = TRUE) could fail if one of the componentsexisted but was a directory on a read-only file system. (Seen onSolaris, where the error code returned is not even listed aspossible on the man page.)• The postscript() and pdf() devices will now allow lwd values lessthan 1 (they used to force such values to be 1).• Fixed font face for CID fonts in pdf() graphics output.(PR#14326)• GERaster() now checks for width or height of zero and doesnothing in those cases; previously the behaviour was undefined,probably device-specific, and possibly dangerous.• wilcox.test(x, y, conf.int = TRUE) failed with an unhelpfulmessage if x and y were constant vectors, and similarly in theone-sample case. (PR#14329)• Improperly calling Recall() from outside a function could cause asegfault. (Reported by Robert McGehee.)• \Sexpr[result=rd] in an Rd file added a spurious newline, whichwas displayed as extra whitespace when rendered.• require(save = TRUE) recorded the names of packages it failed toload.• packageStatus() could return a data frame with duplicate rownames which could then not be printed.• txtProgressBar(style = 2) did not work correctly.txtProgressBar(style = 3) did not display until a non-minimumvalue was set.• contour() did not display dashed line types properly when contourlines were labelled. (Reported by David B. Thompson.)• tools::undoc() again detects undocumented data objects. Ofcourse, this also affects R CMD check.• ksmooth(x,NULL) no longer segfaults.• approxfun(), approx(), splinefun() and spline() could be confusedby x values that were different but so close as to printidentically. (PR#14377)CHANGES IN R VERSION 2.11.1:NEW FEATURES:• R CMD INSTALL checks if dependent packages are available early onin the installation of source packages, thereby giving clearererror messages.• R CMD INSTALL --build now names the file in the format used forMac OS X binary files on that platform.• BIC() in package stats4 now also works with multiple fittedmodels, analogously to AIC().DEPRECATED & DEFUNCT:• Use of file extension .C for C++ code in packages is nowdeprecated: it has caused problems for some makes oncase-insensitive file systems (although it currently works withthe recommended toolkits).INSTALLATION:• Command gnutar is preferred to tar when configure sets TAR. Thisis needed on Mac OS 10.6, where the default tar, bsdtar 2.6.2,has been reported to produce archives with illegal extensions totar (according to the POSIX standard).BUG FIXES:• The C function mkCharLenCE now no longer reads past len bytes(unlikely to be a problem except in user code). (PR#14246)• On systems without any default LD_LIBRARY_PATH (not even/usr/local/lib), [DY]LIB_LIBRARY_PATH is now set without atrailing colon. (PR#13637)• More efficient implementation of utf8ToInt() on long multi-bytestrings with many multi-byte characters. (PR#14262)• aggregate.ts() gave platform-dependent results due to roundingerror for ndeltat != 1.• package.skeleton() sometimes failed to fix filenames for .R or.Rd files to start with an alphanumeric. (PR#14253)It also failed when only an S4 class without any methods wasdefined. (PR#14280)• splinefun(method = "monoH.FC") was not quite monotone in rarecases. (PR#14215)• Rhttpd no longer crashes due to SIGPIPE when the client closesthe connection prematurely. (PR#14266)• format.POSIXlt() could cause a stack overflow and crash when usedon very long vectors. (PR#14267)• Rd2latex() incorrectly escaped special characters in \usagesections.• mcnemar.test() could alter the levels (dropping unused levels) ifpassed x and y as factors (reported by Greg Snow).• Rd2pdf sometimes needed a further pdflatex pass to gethyperlinked pages correct.• interaction() produced malformed results when levels wereduplicated, causing segfaults in split().• cut(d, breaks = <n>) now also works for "Date" or "POSIXt"argument d. (PR#14288)• memDecompress() could decompress incompletely rare xz-compressedinput due to incorrect documentation of xz utils. (Report andpatch from Olaf Mersmann.)• The S4 initialize() methods for "matrix", "array", and "ts" havebeen fixed to call validObject(). (PR#14284)• R CMD INSTALL now behaves the same way with or without--no-multiarch on platforms with only one installed architecture.(It used to clean the src directory without --no-multiarch.)• [<-.data.frame was not quite careful enough in assigning (andpotentially deleting) columns right-to-left. (PR#14263)• rbeta(n, a, b) no longer occasionally returns NaN for a >> 1 > b.(PR#14291)• pnorm(x, log.p = TRUE) could return NaN not -Inf for x near(minus for lower.tail=TRUE) the largest representable number.• Compressed data files *.(txt|tab|csv).(gz|bz2|xz) were notrecognized for the list of data topics and hence for packagesusing LazyData. (PR#14273)• textConnection() did an unnecessary translation on strings in aforeign encoding (e.g. UTF-8 strings on Windows) and so wasslower than it could have been on very long input strings.(PR#14286)• tools::Rd2txt() did not render poorly written Rd filesconsistently with other renderers.It computed widths of strings that would be print()ed withescapes incorrectly, for example in the computation of columnwidth for \tabular.• na.action() did not extract the na.action component asdocumented.• do.call()ing NextMethod in erroneous ways no longer segfaults.(PR#13487)CHANGES IN R VERSION 2.11.0:SIGNIFICANT USER-VISIBLE CHANGES:• Packages must have been installed under R >= 2.10.0, as thecurrent help system is the only one now supported.• A port to 64-bit Windows is now available as well as binarypackage repositories: see the ‘R Administration and InstallationManual’.• Argument matching for primitive functions is now done in the sameway as for interpreted functions except for the deliberateexceptionscall switch .C .Fortran .Call .Externalall of which use positional matching for their first argument,and also some internal-use-only primitives.• The default device for command-line R at the console on Mac OS Xis now quartz() and not X11().NEW FEATURES:• The open modes for connections are now interpreted moreconsistently. open = "r" is now equivalent to open = "rt" forall connections. The default open = "" now means "rt" for allconnections except the compressed-file connections gzfile(),bzfile() and xzfile() for which it means "rb".• R CMD INSTALL now uses the internal untar() function in packageutils: this ensures that all platforms can install bzip2- andxz-compressed tarballs. In case this causes problems (as it hason some Windows file systems when run from Cygwin tools) it canbe overridden by the environment variable R_INSTALL_TAR: settingthis to a modern external tar program will speed up unpacking oflarge (tens of Mb or more) tarballs.• help(try.all.packages = TRUE) is much faster (although the timetaken by the OS to find all the packages the first time it isused can dominate the time).• R CMD check has a new option --timings to record per-exampletimings in file <pkg>.Rcheck/<pkg>-Ex.timings.• The TRE library has been updated to version 0.8.0 (minorbugfixes).• grep[l], [g]sub and [g]regexpr now work in bytes in an 8-bitlocales if there is no marked UTF-8 input string: this will besomewhat faster, and for [g]sub() give the result in the nativeencoding rather than in UTF-8 (which returns to the behaviourprior to R 2.10.0).• A new argument skipCalls has been added to browser() so that itcan report the original context when called by other debuggingfunctions.• More validity checking of UTF-8 and MBCS strings is done byagrep() and the regular-expression matching functions.• The undocumented restriction on gregexpr() to length(text) > 0has been removed.• Package tcltk now sends strings to Tcl in UTF-8: this means thatstrings with a marked UTF-8 encoding are supported in non-UTF-8locales.• The graphics engine now supports rendering of raster (bitmap)images, though not all graphics devices can provide (full)support. Packages providing graphics devices (e.g., Cairo,RSvgDevice, cairoDevice) will need to be reinstalled.There is also support in the graphics engine for capturing rasterimages from graphics devices (again not supported on all graphicsdevices).• R CMD check now also checks if the package and namespace can beunloaded: this provides a check of the .Last.lib() and.onUnload() hook functions (unless --install=fake).• prop.table(x) now accepts a one-dimensional table for x.• A new function vapply() has been added, based on a suggestionfrom Bill Dunlap. It requires that a template for the functionvalue be specified, and uses it to determine the output type andto check for consistency in the function values.• The main HTML help page now links to a reformatted copy of thisNEWS file. (Suggested by Henrik Bengtsson.) Package index fileslink to the package DESCRIPTION and NEWS files and a list ofdemos when using dynamic help.• The [ method for class "AsIs" allows the next method to changethe underlying class. (Wish of Jens Oehlschlägel.)• write.csv[2] no longer allow argument append to be changed: asever, direct calls to write.table() give more flexibility as wellas more room for error.• The index page for HTML help for a package now collapses multiplesignatures for S4 methods into a single entry.• The use of .required by require() and detach() has been replacedby .Depends which is set from the Depends field of a package(even in packages with namespaces). By default detach() preventssuch dependencies from being detached: this can be overridden bythe argument force.• bquote() has been extended to work on function definitions.(Wish of PR#14031).• detach() when applied to an object other than a package returnsthe environment that has been detached, to parallel attach().• readline() in non-interactive use returns "" and does not attemptto read from the ‘terminal’.• New function file_ext() in package tools.• xtfrm() is now primitive and internally generic, as this allowsS4 methods to be set on it without name-space scoping issues.There are now "AsIs" and "difftime" methods, and the defaultmethod uses unclass(x) if is.numeric(x) is true (which will befaster but relies on is.numeric() having been set correctly forthe class).• is.numeric(x) is now false for a "difftime" object(multiplication and division make no sense for such objects).• The default method of weighted.mean(x, w) coerces w to be numeric(aka double); previously only integer weights were coerced. Zeroweights are handled specially so an infinite value with zeroweight does not force an NaN result.There is now a "difftime" method.• bug.report() now has arguments package and lib.loc to generatebug reports about packages. When this is used, it looks for aBugReports field in the package DESCRIPTION file, which will beassumed to be a URL at which to submit the report, and otherwisegenerates an email to the package maintainer. (Suggested byBarry Rowlingson.)• quantile() now has a method for the date-time class "POSIXt", andtypes 1 and 3 (which never interpolate) work for Dates andordered factors.• length(<POSIXlt>) now returns the length of the correspondingabstract timedate-vector rather than always 9 (the length of theunderlying list structure). (Wish of PR#14073 and PR#10507.)• The readline completion backend no longer sorts possiblecompletions alphabetically (e.g., function argument names) if Rwas built with readline >= 6.• select.list() gains a graphics argument to allow Windows/Macusers to choose the text interface. This changes the behaviourof new.packages(ask=TRUE) to be like update.packages(ask=TRUE) onthose platforms in using a text menu: use ask="graphics" for agraphical menu.• New function chooseBioCmirror() to set the "BioC_mirror" option.• The R grammar now prevents using the argument name in signaturesof S4 methods for $ and $<-, since they will always be calledwith a character string value for name. The implicit S4 genericfunctions have been changed to reflect this: packages whichincluded name in the signature of their methods need to beupdated and re-installed.• The handling of the method argument of glm() has been refinedfollowing suggestions by Ioannis Kosmidis and Heather Turner.• str() gains a new argument list.len with default 99, limiting thenumber of list() items (per level), thanks to suggestions fromDavid Winsenius.• Having formal arguments of an S4 method in a different order fromthe generic is now an error (the warning having been ignored bysome package maintainers for a long time).• New functions enc2native() and enc2utf8() convert charactervectors with possibly marked encodings to the current locale andUTF-8 respectively.• Unrecognized escapes and embedded nuls in character strings arenow an error, not just a warning. Thus option "warnEscapes" isno longer needed. rawToChar() now removes trailing nulssilently, but other embedded nuls become errors.• Informational messages about masked objects displayed when apackage is attached are now more compact, using strwrap() insteadof one object per line.• print.rle() gains argument prefix.• download.file() gains a "curl" method, mainly for use onplatforms which have curl but not wget, but also for somehard-to-access URLs.• In Rd, \eqn and \deqn will render in HTML (and convert to text)upper- and lower-case Greek letters (entered as \alpha ...),\ldots, ..., \ge and \le.• utf8ToInt() and intToUtf8() now map NA inputs to NA outputs.• file() has a new argument raw which may help if it is used withsomething other than a regular file, e.g. a character device.• New function strtoi(), a wrapper for the C function strtol.• as.octmode() and as.hexmode() now allow inputs of length otherthan one.The format() and print() methods for "octmode" now preserve namesand dimensions (as those for "hexmode" did).The format() methods for classes "octmode" and "hexmode" gain awidth argument.• seq.int() returns an integer result in some further cases whereseq() does, e.g. seq.int(1L, 9L, by = 2L).• Added \subsection{}{} macro to Rd syntax, for subsections withinsections.• n-dimensional arrays with dimension names can now be indexed byan n-column character matrix. The indices are matched againstthe dimension names. NA indices are propagated to the result.Unmatched values and "" are not allowed and result in an error.• interaction(drop=TRUE) uses less memory (related to PR#14121).• summary() methods have been added to the "srcref" and "srcfile"classes, and various encoding issues have been cleaned up.• If option "checkPackageLicense" is set to TRUE (not currently thedefault), users will be asked to agree to non-known-to-be-FOSSpackage licences at first use.• Checking setAs(a, b) methods only gives a message instead of awarning, when one of a or b is unknown.• New function norm() to compute a matrix norm. norm() and alsobacksolve() and sample() have implicit S4 generics.• Files Renviron.site and Rprofile.site can havearchitecture-specific versions on systems with sub-architectures.• R CMD check now (by default) also checks Rd files forauto-generated content in need of editing, and missing argumentdescriptions.• aggregate() gains a formula method thanks to a contribution byArni Magnusson. The data frame method now allows summaryfunctions to return arbitrarily many values.• path.expand() now propagates NA values rather than convertingthem to "NA".• file.show() now disallows NA values for file names, headers, andpager.• The ‘fuzz’ used by seq() and seq.int() has been reduced from 1e-7to 1e-10, which should be ample for the double-precisioncalculations used in R. It ensures that the fuzz never comesinto play with sequences of integers (wish of PR#14169).• The default value of RSiteSearch(restrict=) has been changed toinclude vignettes but to exclude R-help. The R-help archivesavailable have been split, with a new option of "Rhelp10" forthose from 2010.• New function rasterImage() in the graphics package for drawingraster images.• stats:::extractAIC.coxph() now omits aliased terms when computingthe degrees of freedom (suggestion of Terry Therneau).• cor() and cov() now test for misuse with non-numeric arguments,such as the non-bug report PR#14207.• pchisq(ncp =, log.p = TRUE) is more accurate for probabilitiesnear one. E.g. pchisq(80, 4, ncp=1, log.p=TRUE). (Maybe whatwas meant in PR#14216.)• maintainer() has been added, to give convenient access to thename of the maintainer of a package (contributed by David Scott).• sample() and sample.int() allow zero items to be sampled from azero-length input. sample.int() gains a default value size=n tobe more similar to sample().• switch() returned NULL on error (not previously documented on thehelp page): it now does so invisibly, analogously toif-without-else.It is now primitive: this means that argument EXPR is alwaysmatched to the first argument and there is no danger of partialmatching to later named arguments.• Primitive functions UseMethod(), attr(), attr<-(), on.exit(),retracemem() and substitute() now use standard argument matching(rather than positional matching). This means that allmulti-argument primitives which are not internal now use standardargument matching except where positional matching is desirable(as for switch(), call(), .C() ...).• All the one-argument primitives now check that any name suppliedfor their first argument is a partial match to the argument nameas documented on the help page: this also applies to replacementfunctions of two arguments.• base::which() uses a new .Internal function when arr.ind is FALSEresulting in a 10x speedup. Thanks to Patrick Aboyoun forimplementation suggestions.• Help conversion to text now uses the first part of \enc{}{}markup if it is representable in the current output encoding. Onthe other hand, conversion to LaTeX with the defaultoutputEncoding = "ASCII" uses the second part.• A new class "listOfMethods" has been introduced to represent themethods in a methods table, to replace the deprecated class"MethodsList".• any() and all() return early if possible. This may speed upoperations on long vectors.• strptime() now accepts "%z" (for the offset from UTC in theRFC822 format of +/-hhmm).• The PCRE library has been updated to version 8.02, a bug-fixrelease which also updates tables to Unicode 5.02.• Functions which may use a graphical select.list() (includingmenu() and install.packages()) now check on a Unix-alike that Tkcan be started (and not just capabilities("tcltk") &&capabilities("X11")).• The parser no longer marks strings containing octal or hexescapes as being in UTF-8 when entered in a UTF-8 locale.• On platforms with cairo but not Pango (notably Mac OS X) theinitial default X11() type is set to "Xlib": this avoids severalproblems with font selection when done by cairo rather than Pango(at least on Mac OS X).• New function arrayInd() such that which(x, arr.ind = TRUE) for anarray 'x' is now equivalent to arrayInd(which(x), dim(x),dimnames(x)).DEPRECATED & DEFUNCT:• Bundles of packages are defunct.• stats::clearNames() is defunct: use unname().• Basic regular expressions are defunct, and strsplit(), grep(),grepl(), sub(), gsub(), regexpr() and gregexpr() no longer havean extended argument.• methods::trySilent() is defunct.• index.search() (which was deprecated in 2.10.0) is no longerexported and has a different argument list.• Use of multiple arguments to return() is now defunct.• The use of UseMethod() with more than two arguments is nowdefunct.• In the methods package, the "MethodsList" metadata objects whichhad been superseded by hash tables (environments) since R 2.8.0are being phased out. Objects of this class are no longerassigned or used as metadata by the package.getMethods() is now deprecated, with its internal use replaced byfindMethods() and other changes. Creating objects from the"MethodsList" class is also deprecated.• Parsing strings containing both octal/hex and Unicode escapes nowgives a warning and will become an error in R 2.12.0.INSTALLATION:• UTF-8 is now used for the reference manual and package manuals.This requires LaTeX ‘2005/12/01’ or later.• configure looks for a POSIX compliant tr, Solaris's /usr/ucb/trhaving been found to cause Rdiff to malfunction.• configure is now generated with autoconf 2.65, which works betteron recent systems and on Mac OS X.PACKAGE INSTALLATION:• Characters in R source which are not translatable to the currentlocale are now handled more tolerantly: these will be convertedto hex codes with a warning. Such characters are only reallyportable if they appear in comments.• R CMD INSTALL now tests that the installed package can be loaded(and backs out the installation if it cannot): this can besuppressed by --no-test-load. This avoids installing/updating apackage that cannot be used: common causes of failures to loadare missing/incompatible external software and missing/brokendependent packages.• Package installation on Windows for a package with a srcdirectory now checks if a DLL is created unless there is asrc/Makefile.win file: this helps catch broken installationswhere the toolchain has not reported problems in building theDLL. (Note: this can be any DLL, not just one named<pkg-name>.dll.)BUG FIXES:• Using with(), eval() etc with a list with some unnamed elementsnow works. (PR#14035)• The "quick" dispatch of S4 methods for primitive functions wasnot happening, forcing a search each time. (Dispatch forclosures was not affected.) A side effect is that default valuesfor arguments in a method that do not have defaults in thegeneric will now be ignored.• Trying to dispatch S4 methods for primitives during the searchfor inherited methods slows that search down and potentiallycould cause an infinite recursion. An internal switch was addedto turn off all such methods from findInheritedMethods().• R framework installation (on Mac OS X) would not work properly ifa rogue Resources directory was present at the top level. Such anon-symlink will now be renamed to Resources.old (and anythingpreviously named Resources.old removed) as part of the frameworkinstallation process.• The checks for conforming S4 method arguments could fail when thesignature of the generic function omitted some of the formalarguments (in addition to ...). Arguments omitted from themethod definition but conforming (per the documentation) shouldnow be ignored (treated as "ANY") in dispatching.• The computations for S4 method evaluation when ... was in thesignature could fail, treating ... as an ordinary symbol. Thishas been fixed, for the known cases.• Various ar() fitting methods have more protection for singularfits.• callNextMethod now works again with the drop= argument in [• parse() and parse_Rd() miscounted columns when multibyte UTF-8characters were present.• Formatting of help pages has had minor improvements: extra blanklines have been removed from the text format, and empty packagelabels removed from HTML.• cor(A, B) where A is n x 1 and B a 1-dimensional array segfaultedor gave an internal error. (The case cor(B, A) was PR#7116.)• cut.POSIXt() applied to a start value after the DST transition ona DST-change day could give the wrong time for argument breaks inunits of days or longer. (PR#14208)• do_par() UNPROTECTed too early (PR#14214)• Subassignment x[[....]] <- y didn't check for a zero-length righthand side, and inserted a rubbish value. (PR#14217)• fisher.test() no longer gives a P-value *very* slightly > 1, insome borderline cases.• Internal function matchArgs() no longer modifies the generalpurpose bits of the SEXPs that make up the formals list of Rfunctions. This fixes an invalid error message that would occurwhen a garbage collection triggered a second call to matchArgsfor the same function _via_ a finalizer.• gsub() in 2.10.x could fail from stack overflow for extremelylong strings due to temporary data being allocated on the stack.Also, gsub() with fixed=TRUE is in some circumstancesconsiderably faster.• Several primitives, including attributes(), attr<-()interactive(), nargs() and proc.time(), did not check that theywere called with the correct number of arguments.• A potential race condition in list.files() when other processesare operating on the directory has been fixed; the code nowdynamically allocates memory for file listings in a single passinstead of making an initial count pass.• mean(x, trim=, na.rm = FALSE) failed to return NA if x containedmissing values. (Reported by Bill Dunlap.)• Extreme tail behavior of, pbeta() {and hence pf()}, e.g.,pbeta(x, 3, 2200, lower.tail=FALSE, log.p=TRUE) now returnsfinite values instead of jumping to -Inf too early. (PR#14230).• parse(text=x) misbehaved for objects x that were not coercedinternally to character, notably symbols. (Reported to R-develby Bill Dunlap.)• The internal C function coerceSymbol now handles coercion tocharacter, and warns if coercion fails (rather than silentlyreturning NULL). This allows a name to be given where acharacter vector is required in functions which coerceinternally.• The interpretation by strptime() of "%c" was non-standard (notthat it is ever advisable to use locale- and system-specificinput formats).• capabilities("X11") now works the same way on Mac OS X as onother platforms (and as documented: it was always true for Rbuilt with --with-aqua, as the CRAN builds are).• The X11() device with cairo but not Pango (notably Mac OS X) nowchecks validity of text strings in UTF-8 locales (since Pangodoes but cairo it seems does not).• read.fwf() misread multi-line records when n was specified.(PR#14241)• all.equal(tolerance = e) passes the numeric tolerance also to thecomparison of the attributes.• pgamma(0, 0), a boundary case, now returns 0, its limit from theleft, rather than the limit from the right.• Issuing POST requests to the internal web server could stall therequest under certain circumstances.• gzcon( <textConnection> ), an error, no longer damages theconnection (in a way to have it segfault). (PR#14237)• All the results from hist() now use the nominal breaks not thoseadjusted by the numeric ‘fuzz’: in recent versions the nominalbreaks were reported but the 'density' referred to the intervalsused in the calculation - which mattered very slightly for one ofthe extreme bins. (Based on a report by Martin Becker.)• If xy[z].coords (used internally by many graphics functions) aregiven a list as x, they now check that the list has suitablenames and give a more informative error message. (PR#13936)CHANGES IN R VERSION 2.10.1 patched:NEW FEATURES:• The handling of line textures in the postscript() and pdf()devices was set up for round end caps (the only type whichexisted at the time): it has now been adjusted for butt endcaps.• lchoose(a, k) is now defined as log(abs(choose(a,k))),analogously to lfactorial().• Although \eqn{} in Rd files is defined as a ‘verbatim’ macro,many packages expected ... and \ldots to be interpreted there (aswas the case in R < 2.10.0), so this is now done (using anellipsis in HTML rendering).• Escaping of braces in quoted strings in R-code sections of Rdfiles is allowed again. This had been changed for the new Rdformat in R 2.10.0 but was only documented on the developer siteand was handled inconsistently by the converters: text andexample conversion removed the escapes but HTML conversion didnot.• The PCRE library has been updated to version 8.01, a bug-fixrelease.• tools::readNEWS() now accepts a digit as the first character of anews section.BUG FIXES:• Using read.table(header=TRUE) on a header with an embedded newline would copy part of the header into the data. (PR#14103)• qpois(p = 1, lambda = 0) now gives 0 as for all other p.(PR#14135)• Functions related to string comparison (e.g. unique(), match())could cause crashes when used with strings not in the nativeencoding, e.g. UTF-8 strings on Windows. (PR#14114 and PR#14125)• x[ , drop=TRUE] dropped an NA level even if it was in use.• The dynamic HTML help system reported the wrong MIME type for thestyle sheet.• tools::codoc() (used by R CMD check) was missing cases where thefunction had no arguments but was documented to have some.• Help links containing special characters (e.g. "?") were notgenerated correctly when rendered in HTML. (PR#14155)• lchoose(a, k) no longer wrongly gives NaN for negative a.• ks.test() could give a p-value that was off by one observationdue to rounding error. (PR#14145)• readBin()/readChar() when reading millions of character stringsin a single call used excessive amounts of memory (which alsoslowed them down).• R CMD SHLIB could fail if used with paths that were notalphanumeric, e.g. contained +. (PR#14168)• sprintf() was not re-entrant, which potentially caused problemsif an as.character() method called it.• The quartz() device did not restore the clipping region whenfilling the background for a new page. This could be observed inmulti-page bitmap output as stale outer regions of the plot.• p.adjust(method, n) now works correctly for the rare case n >length(p), also when method differs from "bonferroni" or "none",thanks to a patch from Gordon Smyth.• tools::showNonASCII() failed to detect non-ASCII characters ificonv() (incorrectly) converted them to different ASCIIcharacters. (Seen on Windows only.)• tcrossprod() wrongly failed in some cases when one of thearguments was a vector and the other a matrix.• [cr]bind(..., deparse.level=2) was not always giving names whendocumented to do so. (Discovered whilst investigating PR#14189.)• match(incomparables=<non-NULL>) could in rare casesinfinite-loop.• poisson.test() needed to pass argument conf.level tobinom.test(). (PR#14195)• The "nls" method for df.residual() gave incorrect results formodels fitted with na.action = na.exclude. (PR#14194)• A change to options(scipen=) was only implemented when printingnext occurred, even though it should have affected interveningcalls to axis(), contour() and filledcontour().• prettyNum(drop0trailing=TRUE) did not handle signs of imaginaryparts of complex numbers correctly (and this was used by str():PR#14201).• system.time() had the sys.child component wrong (copieduser.child instead) on systems with HAVE_GETRUSAGE. (PR#14210)• Changing both line texture and line cap (end) resulted in thelatter to be omitted form the PDF code. In addition, line cap(end) and join are now set explicitly in PDF output to ensurecorrect defaults.• The suppression of auto-rotation in bitmap() and dev2bitmap()with the "pdfwrite" device was not working correctly.• plot(ecdf(), log="x") no longer gives an incorrect warning.• read.fwf() works again when argument file is a connection.• Startup files will now be found if their paths exceed 255 bytes.(PR#14228)• contrasts<- (in the stats package) no longer has an undeclareddependence on methods (introduced in 2.10.0).CHANGES IN R VERSION 2.10.1:NEW FEATURES:• The PCRE library has been updated to version 8.00.• R CMD INSTALL has new options --no-R, --no-libs, --no-data,--no-help, --no-demo, --no-exec, and --no-inst to suppressinstallation of the specified part of the package. These areintended for special purposes (e.g. building a database of helppages without fully installing all packages).• The documented line-length limit of 4095 bytes when reading fromthe console now also applies also to parse(file="") (whichpreviously had a limit of around 1024 bytes).• A Bioconductor mirror can be set for use by setRepositories()_via_ the option "BioC_mirror", e.g. the European mirror can beselected byoptions(BioC_mirror="http://bioconductor.statistik.tu-dortmund.de").• Double-clicking in a tk_select.list() list box now selects theitem and closes the list box (as happens on the Windowsselect.list() widget).INSTALLATION:• configure will be able to find a usable libtiff in some rarecircumstances where it did not previously (where libtiff neededto be linked explicitly against -ljpeg).• Making refman.pdf works around a problem with the indexing withhyperref 6.79d and later.DEPRECATED & DEFUNCT:• The extended argument is deprecated in strsplit(), grep(),grepl(), sub(), gsub(), regexpr() and gregexpr() (not just thevalue extended = FALSE) and will be removed in R 2.11.0.BUG FIXES:• trigamma(x) and other psigamma(x, n) calls are now accurate forvery large abs(x). (PR#14020)• [g]sub(perl=FALSE, fixed=FALSE) could use excessive stack spacewhen used with a very long vector containing some non-ASCIIstrings.• The default method of weighted.mean(na.rm = TRUE) did not omitweights for NA observations in 2.10.0. (PR#14032)• [g]regexpr(pattern, fixed = TRUE) returned match positions inbytes (not characters) in an MBCS locale if pattern was a singlebyte.[g]sub(fixed = TRUE) with a single-byte pattern could conceivablyhave matched part of a multibyte character in a non-UTF-8 MBCS.• findLineNum() and setBreakpoint() would sometimes fail if thespecified file was not in the current directory.• Package tcltk's demo(tkdensity) was broken in 2.9.0 when demo()was changed to set par(ask = TRUE).• gsub() with backrefs could fail on extremely long strings(hundreds of thousands of characters) due to integer overflow ina length calculation.• abline(untf=TRUE) now uses a better x-grid in log-scale, e.g.,for plot(c(1,300), c(1,300), log="xy"); abline(4,1, untf=TRUE).• detach()/unloadNamespace() arrange to flush the package'slazyload cache of R objects once the package/namespace is nolonger needed.• There have been small fixes to the rendering of help, e.g.\command is now rendered verbatim (so e.g. -- is not interpreted,PR#14045).Also, there are many small changes to help files where the newconverters were not rendering them in the same way as before.• available.packages() would fail when run on a repository with nopackages meeting the filtering conditions. (PR#14042)• rep(x, times, each = 2) gave invalid results when the timesargument was a vector longer than x. Reported by Bill Dunlap.• An error when unloadNamespace() attempted to run the .onUnload()function gave an error in the reporting function and so was notreported properly.• Text help rendering did not handle very long input linesproperly.• promptMethods() generated signature documentation improperly.• pgamma(x, a, lower.tail=FALSE) and qgamma(...) are nowconsiderably more accurate in some regions for very small a.qgamma() now correctly returns 0 instead of NaN in similarextreme cases, and qgamma() no longer warns in the case of smalla, see (PR#12324).• unname() now also removes names from a zero length vector.• Printing results from ls.str() no longer evaluates unevaluatedcalls.• complete.cases() failed on a 0-column data frame argument.(Underlies PR#14066.)It could return nonsensical results if no input determined thenumber of cases (seen in the no-segfault tests).• An error in nls() with a long formula could cause a segfault.(PR#14059)• qchisq(p, df, ncp, lower.tail = FALSE) with ncp >= 80 wasinaccurate for small p (as the help page said): it is now lessinaccurate. (In part, PR#13999.)For ncp less than but close to 80, pchisq() and qchisq() are moreaccurate for probabilities very close to 1 (a series expansionwas truncated slightly too early).pchisq(x, df, ncp) can no longer return values just larger thanone for large values of ncp.• intToUtf8() could fail when asked to produce 10Mb or morestrings, something it was never intended to do: unfortunatelyWindows crashed R (other OSes reported a lack of resources).(PR#14068)• chisq.test() could fail when given argument x or y which deparsedto more than one line. (Reported by Laurent Gauthier.)• S4 methods are uncached whenever the namespace containing them isunloaded (by unloadNamespace() as well as by detach(unload =TRUE)).• The internal record-keeping by dyn.load/dyn.unload wasincomplete, which could crash R if a DLL that registered.External routines had earlier been unloaded.• bessel[JY](x, nu) with nu a negative integer (a singular case) isnow correct, analogously to besselI(), see PR#13556.• tools::file_path_as_absolute() doubled the file separator whenapplied to a file such as "/vmunix" or (on Windows) "d:/afile" ina directory for which getwd() would return a path with a trailingseparator (largely cosmetic, as reasonable file systems handlesuch a path correctly). (Perhaps what was meant by PR#14078.)• unsplit(drop = TRUE) applied to a data frame failed to pass dropto the computation of row names. (PR#14084)• The "difftime" method of mean() ignored its na.rm argument.• tcltk::tk_select.list() is now more likely to remove the widgetimmediately after selection is complete.• Adding/subtracting a "difftime" object to/from a "POSIXt" or"Date" object works again (it was broken by the addition ofOps.difftime).• Conversion to latex of an Rd file with no aliases failed.• wilcox.test(conf.int=TRUE) has achieved.level corrected and, forexact=FALSE, now returns a estimate component which does notdepend on the alternative used.• help.search() failed when the package argument was specified.(PR#14113)• switch(EXPR = "A") now returns NULL, as does switch(1) (whichused to signal an error).CHANGES IN R VERSION 2.10.0:SIGNIFICANT USER-VISIBLE CHANGES:• Package help is now converted from Rd by the R-based convertersthat were first introduced in 2.9.0. This means• Packages that were installed by R-devel after 2009-08-09should not be used with earlier versions of R, and mostaspects of package help (including the runnable examples)will be missing if they are so used.• Text, HTML and latex help and examples for packages installedunder the new system are converted on-demand from storedparsed Rd files. (Conversions stored in packages installedunder R < 2.10.0 are used if no parsed Rd files are found.It is recommended that such packages be re-installed.)• HTML help is now generated dynamically using an HTTP serverrunning in the R process and listening on the loopback interface.• Those worried about security implications of such a servercan disable it by setting the environment variableR_DISABLE_HTTPD to a non-empty value. This disableshelp.start() and HTML help (so text help is shown instead).• The Java/Javascript search engine has been replaced by anHTML interface to help.search(). help.start() no longer hasan argument searchEngine as it is no longer needed.• The HTML help can now locate cross-references of the form\link[pkg]{foo} and \link[pkg:foo]{bar} where foo is an aliasin the package, rather than the documented (basename of a)filename (since the documentation has been much ignored).NEW FEATURES:• polygon(), pdf() and postscript() now have an argumentfillOddEven (default FALSE), which controls the mode used forpolygon fills of self-intersecting shapes.• New debugonce() function; further, getOption("deparse.max.lines")is now observed when debugging, from a code suggestion by JohnBrzustowski. (PR#13647/8)• plot() methods for "stepfun" and hence "ecdf" no longer plotpoints by default for n >= 1000.• [g]sub(perl=TRUE) now also supports "\E" in order to *end* "\U"and "\L" case changes, thanks to a patch from Bill Dunlap.• factor(), levels()<-, etc, now ensure that the resulting factorlevels are unique (as was always the implied intention). Factorswith duplicated levels are still constructible by low-levelmeans, but are now declared illegal.• New print() (S3) method for class "function", also used forauto-printing. Further, .Primitive functions now print andauto-print identically. The new method is based on codesuggestions by Romain François.• The print() and toLatex() methods for class "sessionInfo" nowshow the locale in a nicer format and have arguments to suppresslocale information.• In addition to previously only round(), there are other Mathgroup (S3) methods for "difftime", such as floor(), signif(),abs(), etc.• For completeness, old.packages() and available.packages() allowarguments type to be specified (you could always specifyarguments available or contriburl).• available.packages() by default only returns information on thelatest versions of packages whose version requirements aresatisfied by the currently running R.• tools::write_PACKAGES() has a new argument latestOnly, whichdefaults to TRUE when only the latest versions in the repositorywill be listed in the index.• getOption() has a new argument default that is returned if thespecified option is not set. This simplifies querying a valueand checking whether it is NULL or not.• parse() now warns if the requested encoding is not supported.• The "table" method of as.data.frame() gains a stringsAsFactorsargument to allow the classifying factors to be returned ascharacter vectors rather than the default factor type.• If model.frame.default() encounters a character variable wherexlev indicates a factor, it now converts the variable to a factor(with a warning).• curve() now returns a list containing the points that w§eredrawn.• spineplot() now accepts axes = FALSE, for consistency with otherfunctions called by plot.factor().• The Kendall and Spearman methods of cor.test() can optionally usecontinuity correction when not computing exact p-values. (TheKendall case is the wish of PR#13691.)• R now keeps track of line numbers during execution for codesourced with options(keep.source = TRUE). The source referenceis displayed by debugging functions such as traceback(),browser(), recover(), and dump.frames(), and is stored as anattribute on each element returned by sys.calls().• More functions now have an implicit (S4) generic definition.• quantile.default() now disallows factors (wish of PR#13631) andits help documents what numeric-like properties its input need tohave to work correctly.• weighted.mean() is now generic and has "Date", "POSIXct" and"POSIXlt" methods.• Naming subscripts (e.g. x[i=1, j=2]) in data.frame methods for [and [[ now gives a warning. (Names are ignored in the defaultmethod, but could have odd semantics for other methods, and dofor the data.frame ones.)• as.data.frame() has an "aovproj" method. (Wish of PR#13505)• as.character(x) for numeric x no longer produces strings such as"0.30", i.e., with trailing zeros. This change also renderslevels construction in factor() more consistent.• codocClasses(), which checks consistency of the documentation ofS4 class slots, now does so in considerably more cases. Thedocumentation of inherited slots (from superclasses) is nowoptional. This affects R CMD check <pkg> when the packagedefines S4 classes.• codoc() now also checks S4 methods for code/documentationmismatches.• for(), while(), and repeat() loops now always return NULL astheir (invisible) value. This change was needed to address areference counting bug without creating performance penalties forsome common use cases.• The print() method for ls.str() results now obeys an optionaldigits argument.• The method argument of glm() now allows user-contributed methods.• More general reorder.default() replaces functionality ofreorder.factor() and reorder.character().• The function aspell() has been added to provide an interface tothe Aspell spell-checker.• Filters RdTextFilter() and SweaveTeXFilter() have been added tothe tools package to provide support for aspell() or other spellcheckers.• xtabs() with the new argument sparse = TRUE now returns a sparseMatrix, using package Matrix.• contr.sum() etc gain an argument sparse which allows sparsematrices to be returned.contrasts() also gains a sparse argument which it passes to theactual contrast function if that has a formal argument sparse.contrasts(f, .) <- val now also works when val is a sparseMatrix. It is planned that model.matrix() will work with suchfactors f in the future.• readNEWS() will recognize a UTF-8 byte-order mark (BOM) in theNEWS file. However, it is safer to use only ASCII code therebecause not all editors recognize BOMs.• New utility function inheritedSlotNames() for S4 classprogramming.• tabulate() now allows NAs to pass through (and be ignored).• If debug() is called on an S3 generic function then all methodsare debugged as well.• Outlier symbols drawn by boxplot() now obey the outlwd argument.Reported by Jurgen Kluge.• svd(x) and eigen(x) now behave analogously to qr(x) in acceptinglogical matrices x.• File NEWS is now in UTF-8, and has a BOM (often invisible) on thefirst line, and Emacs local variables set for UTF-8 at the end.RShowDoc("NEWS") should display this correctly, given suitablefonts.• terms.formula(simplify = TRUE) now does not deparse the LHS andso preserves non-standard responses such as `a: b` (requested bySundar Dorai-Raj).• New function news() for building and querying R or package newsinformation.• z^n for integer n and complex z is more accurate now if |n| <=65536.• factor(NULL) now returns the same as factor(character(0)) insteadof an error, and table(NULL) consequently does analogously.• as.data.frame.vector() (and its copies) is slightly faster byavoiding a copy if there are no names (following a suggestion ofTim Hesterberg).• writeLines(), writeBin() and writeChar() have a new argumentuseBytes. If false, character strings with marked encodings aretranslated to the current locale (as before) but if true they arewritten byte-by-byte.• iconv() has a new argument mark which can be used (by experts) tosuppress the declaration of encodings.• DESCRIPTION file's LinkingTo specs are now recognized asinstallation dependencies, and included in package managementcomputations.• Standardized DESCRIPTION file License specs are now available forpackage management computations.• "\uxxxx" and "\Uxxxxxxxx" escapes can now be parsed to a UTF-8encoded string even in non-UTF-8 locales (this has beenimplemented on Windows since R 2.7.0). The semantics have beenchanged slightly: a string containing such escapes is alwaysstored in UTF-8 (and hence is suitable for portably includingUnicode text in packages).• New as.raw() method for "tclObj" objects (wish of PR#13758).• Rd.sty now makes a better job of setting email addresses,including using a monospaced font.• textConnection() gains an encoding argument to determine howinput strings with marked encodings will be handled.• R CMD Rd2pdf is available as a shortcut for R CMD Rd2dvi --pdf.• R CMD check now checks links where a package is specified(\link[pkg]{file} or \link[pkg:file]{topic}), if the package isavailable. It notes if the package is not available, as in manycases this is an error in the link.• identical() gains three logical arguments, which allow for evenmore differentiation, notably -0 and 0.• legend() now can specify the border color of filled boxes, thanksto a patch from Frederic Schutz.• Indexing with a vector index to [[ ]] has now been extended toall recursive types.• Pairlists may now be assigned as elements of lists. (Lists couldalways be created with pairlist elements, but [[<- didn't supportassigning them.)• The parser now supports C-preprocessor-like #line directives, soerror messages and source references may refer to the originalfile rather than an intermediate one.• New functions findLineNum() and setBreakpoint() work with thesource references to find the location of source lines and setbreakpoints (using trace()) at those lines.• Namespace importing is more careful about warning on maskedgenerics, thanks to a patch by Yohan Chalabi.• detach() now has an argument character.only with the same meaningas for library() or require().• available.packages() gains a filters argument for specifying thefiltering operations performed on the packages found in therepositories. A new built-in "license/FOSS" filter only retainspackages for which installation can proceed solely based onpackages which can be verified as Free or Open Source Software(FOSS) employing the available license specifications.• In registering an S3 class by a call to setOldClass(), the datapart (e.g., the object type) required for the class can beincluded as one of the superclasses in the Classes argument.• The argument f to showMethods() can be an expression evaluatingto a generic function, allowing methods to be shown fornon-exported generics and other nonstandard cases.• sprintf() now supports %o for octal conversions.• New function Sys.readlink() for information about symbolic links,including if a file is a symbolic link.• Package tools has new functions checkRdaFiles() andresaveRdaFiles() to report on the format of .rda/.RData datafiles, and to re-save them in a different compressed format,including choosing the most compact format available.A new INSTALL option, --resave-data, makes use of this.• File ~/.R/config is used in preference to ~/.Rconfig, and theseare now documented in ‘R Installation and Administration’.• Logic operations with complex numbers now work, as they werealways documented to, and as in S.• arrows() and segments() allow one of x1 or y1 to be omitted tosimplify the specification of vertical or horizontal lines(suggestion of Tim Hesterberg).• approxfun() is faster by avoiding repeated NA checks (diagnosisand patch by Karline Soetaert & Thomas Petzoldt).• There are the beginnings of a Nynorsk translation by Karl OveHufthammer.• stripchart() allows par bg to be passed in for the backgroundcolour for pch = 21 (wish of PR#13984).• New generic function .DollarNames() to enable class authors tocustomize completion after the $ extractor.• load(), save(), dput() and dump() now open a not-yet-openconnection in the appropriate mode (as other functions usingconnections directly already did).REGULAR EXPRESSIONS:• A different regular expression engine is used for basic andextended regexps and is also for approximate matching. This isbased on the TRE library of Ville Laurikari, a modified copy ofwhich is included in the R sources.This is often faster, especially in a MBCS locale.Some known differences are that it is less tolerant of invalidinputs in MBCS locales, and in its interpretation of undefined(extended) regexps such as "^*". Also, the interpretation ofranges such as [W-z] in caseless matching is no longer to map therange to lower case.This engine may in future be used in ‘literal’ mode for fixed =TRUE, and there is a compile-time option in src/main/grep.c to doso.• The use of repeated boundary regexps in gsub() and gregexpr() aswarned about in the help page does not work in this engine (itdid in the previous one since 2005).• Extended (and basic) regexps now support same set of options asfor fixed = TRUE and perl = TRUE, including useBytes and supportfor UTF-8-encoded strings in non-UTF-8 locales.• agrep() now has full support for MBCS locales with a modest speedpenalty. This enables help.search() to use approximate matchingcharacter-wise rather than byte-wise.• [g]sub use a single-pass algorithm instead of matching twice andso is usually faster.• The perl = TRUE versions now work correctly in a non-UTF-8 MBCSlocale, by translating the inputs to UTF-8.• useBytes = TRUE now inhibits the translation of inputs withmarked encodings.• strsplit() gains a useBytes argument.• The algorithm used by strsplit() has been reordered to batch byelements of split: this can be much faster for fixed = FALSE (asmultiple compilation of regexps is avoided).• The help pages, including ?regexp, have been updated and shouldbe consulted for details of the new implementations.HELP & Rd FILE CHANGES:• A new dynamic HTML help system is used by default, and may becontrolled using tools::startDynamicHelp(). With this enabled,HTML help pages will be generated on request, resolving links bysearching through the current .libPaths(). The user may setoptions("help.ports") to control which IP port is used by theserver.• help.start() no longer sets options(htmlhelp = TRUE) (it used toon Unix but not on Windows). Nor does it on Unix reset the"browser" option if given an argument of that name.Arguments update and remote are now available on all platforms:the default is update = FALSE since the http server will updatethe package index at first use.• help() has a new argument help_type (with default set by theoption of that name) to supersede arguments offline, htmlhelp andchmhelp (although for now they still work if help_type is unset).There is a new type, "PDF" to allow offline PDF (rather thanPostScript).A function offline_help_helper() will be used if this exists inthe workspace or further down the search path, otherwise thefunction of that name in the utils namespace is used.• Plain text help is now used as the fallback for HTML help (as italways was for Compiled HTML help on Windows).• It is possible to ask for static HTML pages to be prebuilt _via_the configure option --enable-prebuilt-html. This may be usefulfor those who wish to make HTML help available outside R, e.g. ona local web site.• An experimental tag \Sexpr has been added to Rd files, toevaluate expressions at build, install, or render time.Currently install time and render time evaluation are supported.• Tags \if, \ifelse and \out have been added to allowformat-specific (or more general, using \Sexpr) conditional textin man pages.• The parse_Rd() parser has been made more tolerant of codingerrors in Rd files: now all syntax errors are reported aswarnings, and an attempt is made to continue parsing.• parse_Rd() now has an argument fragment (default FALSE) to acceptsmall fragments of Rd files (so that \Sexpr can output Rd codewhich is then parsed).• parse_Rd() now always converts its input to UTF-8. The Rd2*rendering functions have a new argument, outputEncoding, whichcontrols how their output is encoded.• parse_Rd() no longer includes the newline as part of a "%"-stylecomment.• There have been various bug fixes and code reorganization in theRd renderers Rd2HTML, Rd2latex, Rd2txt, and Rd2ex.All example files are now created with either ASCII or UTF-8encoding, and the encoding is only marked in the file if there isany non-UTF-8 code (previously it was marked if the help file hadnon-ASCII contents, possibly in other sections).• print.Rd() now adds necessary escape characters so that printingand re-parsing an Rd object should produce an equivalent object.• parse_Rd() was incorrectly handling multiple backslashes in Rcode strings, converting 4n+3 backslashes to 2n+1 instead of2n+2.• parse_Rd() now recognizes the \var tag within a quoted string inR-like text.• parse_Rd() now treats the argument of \command as LaTeX-like,rather than verbatim.COMPRESSION:• New function untar() to list or unpack tar archives, possiblycompressed. This uses either an external tar command or aninternal implementation.• New function tar() to create (possibly compressed) tar archives.• New functions memCompress() and memDecompress() for in-memorycompression and decompression.• bzfile() has a compress argument to select the amount of effortput into compression when writing.• New function xzfile() for use with xz-compressed files. (Thiscan also read files compressed by some versions of lzma.)• gzfile() looks at the file header and so can now also readbzip2-ed files and xz-compressed files.• There are the new options of save(compress = "bzip2") and "xz" touse bzip2 or xz compression (which will be slower, but can givesubstantially smaller files). Argument compression_level givesfiner control over the space/time tradeoffs.load() can read such saves (but only as from this version of R).• R CMD INSTALL/check and tools::writePACKAGES accept a wider rangeof compressed tar archives. Precisely how wide depends on thecapabilities of the host system's tar command: they almost alwaysinclude .tar.bz2 archives, and with modern versions of tar otherforms of compression such as lzma and xz, and arbitraryextensions.• R CMD INSTALL has a new option --data-compress to control thecompression used when lazy-loading data. New possibilities are--data-compress=bzip2 which will give ca 15% better compressionat the expense of slower installation times, and--data-compress=xz, often giving even better compression on largedatasets at the expense of much longer installation times. (Thelatter is used for the recommended packages: it is particularlyeffective for survival.)• file() for open = "", "r" or "rt" will automagically detectcompressed files (from gzip, bzip2 or xz). This means thatcompressed files can be specified by file name (rather than _via_a gzfile() connection) to read.table(), readlines(), scan() andso on.• data() can handle compressed text files with extensions.{txt,tab,csv}.{gz,bz2,xz} .DEPRECATED & DEFUNCT:• png(type="cairo1") is defunct: the value is no longer recognized.• tools::Rd_parse() is defunct (as this version of R uses only Rdversion 2).• Use of file ~/.Rconf (which was deprecated in favour of~/.Rconfig in 2004) has finally been removed.• Bundles of packages are deprecated. See ‘Writing R Extensions’for the steps needed to unbundle a bundle.• help() arguments offline, htmlhelp and chmhelp are deprecated infavour of help_type.• clearNames() (in package stats) is deprecated for unname().• Basic regular expressions (extended = FALSE) are deprecated instrsplit, grep and friends. There is a precise POSIX standardfor them, but it is not what recent RE engines implement, and itseems that in almost all cases package authors intended fixed =TRUE when using extended = FALSE.• methods::trySilent() is deprecated in favour of try(silent=TRUE)or - more efficiently and flexibly - something liketryCatch(error = function(e) e).• index.search() is deprecated: there are no longer directories oftypes other than help.INSTALLATION:• cairo >= 1.2 is now required (1.2.0 was released in July 2006)for cairo-based graphics devices (which remain optional).• A suitable iconv() is now required: support for configure option--without-iconv has been withdrawn (it was deprecated in R2.5.0).• Perl is no longer ‘essential’. R can be built without it, butscripts R CMD build, check, Rprof and Sd2d currently require it.• A system glob function is now essential (a working Sys.glob() hasbeen assumed since R 2.9.0 at least).• C99 support for MBCS is now required, and configure option--disable-mbcs has been withdrawn.• Having a version of tar capable of automagically detectingcompressed archives is useful for utils::untar(), and so gtar (acommon name for GNU tar) is preferred to tar: set environmentvariable TAR to specify a particular tar command.INTERNATIONALIZATION:• There is some makefile support for adding/updating translationsin packages: see po/README and ‘Writing R Extensions’.There is support for the use of dngettext for C-leveltranslations in packages: see ‘Writing R Extensions’.BUG FIXES:• Assigning an extra 0-length column to a data frame by DF[, "foo"]<- value now works in most cases (by filling with NAs) or fails.(It used to give a corrupt data frame.)• validObject() avoids an error during evaluation in the case ofvarious incorrect slot definitions.• n:m now returns a result of type "integer" in a few more boundarycases.• The zap.ind argument to printCoefmat() did not usually work asother code attempted to ensure that non-zero values had anon-zero representation.• printCoefmat() formatted groups of columns together, not just thecs.ind group but also the zap.ind group and a residual group. Itnow formats all columns except the cs.ind group separately (andzaps the zap.ind group column-by-column). The main effect willbe see in the output from print.anova(), as this grouped SS-likecolumns in the zap.ind group.• R_ReplDLLinit() initializes the top-level jump so that someembedded applications on Windows no longer crash on error.• identical() failed to take the encoding of character strings intoaccount, so identical byte patterns are not necessarily identicalstrings, and similarly Latin-1 and UTF-8 versions of the samestring differ in byte pattern.• methods(f) used to warn unnecessarily for an S4 generic f whichhad been created based on an existing S3 generic.• The check for consistent ordering of superclasses was notignoring all conditional relations (the symptom was usuallyspurious warnings for classes extending "array").• Trying to assign into a raw vector with an index vectorcontaining NAs could cause a segfault. Reported by Hervé Pagès.• Rscript could segfault if (by user error) its filename argumentwas missing. Reported by Martin Morgan.• getAnywhere() (and functions that use it, including argumentcompletion in the console) did not handle special built-infunctions. Reported by Romain Francois.• order() was missing a PROTECT() call and so could segfault whencalled on character data under certain (rare) circumstancesinvolving marked non-native encodings.• prettyNum(z, drop0trailing=TRUE) did not work correctly when zwas a complex vector. Consequently, str(z, ...) also did not.(PR#13985)• make distclean removed too many files in etc/ if builddir =srcdir.• R CMD replaced TEXINPUTS rather than appending to it (asdocumented and intended).• help.start() no longer fails on unix when "browser" is afunction.• pbeta(x, ..., log.p = TRUE) is sometimes more accurate, e.g., forvery small x.• Unserializing a pre-2.8 workspace containing pure ASCII characterobjects with a Latin-1 or UTF-8 encoding would corrupt theCHARSXP cache.*************************************************** ** 2.9 SERIES NEWS ** ***************************************************CHANGES IN R VERSION 2.9.2 patchedNEW FEATURESo On systems using ICU for collation (including Mac OS X), usingSys.setlocale() to change the LC_COLLATE setting is morelikely to change the collation provided by ICU.BUG FIXESo On systems using zipped data and help (Windows) the names ofdatasets could clash with temporary filenames used whenrunning examples, causing errors.o as.complex() sometimes warned about NAs on coercions andsometimes not (when the C function asComplex was used, e.g. onlist elements). (PR#13942)o cat() on an unopened connection could close it twice, andwith file() connections segfaulted on some systems.o Printing a list could segfault if the elements are nested toodeeply.CHANGES IN R VERSION 2.9.2NEW FEATURESo install.packages(NULL) now lists packages only once even if theyoccur in more than one repository (as the latest compatibleversion of those available will always be downloaded).o approxfun() and approx() now accept a 'rule' of length two, foreasy specification of different interpolation rules on left andright.They no longer segfault for invalid zero-length specificationof 'yleft, 'yright', or 'f'.o seq_along(x) is now equivalent to seq_len(length(x)) even wherelength() has an S3/S4 method; previously it (intentionally)always used the default method for length().o PCRE has been updated to version 7.9 (for bug fixes).o agrep() uses 64-bit ints where available on 32-bit platformsand so may do a better job with complex matches.(E.g. PR#13789, which failed only on 32-bit systems.)DEPRECATED & DEFUNCTo R CMD Rd2txt is deprecated. (It is just a wrapper forR CMD Rdconv -t txt.)o tools::Rd_parse() is deprecated and will be removed in 2.10.0(which will use only Rd version 2).BUG FIXESo parse_Rd() still did not handle source reference encodingsproperly.o The C utility function PrintValue no longer attempts to printattributes for CHARSXPs as those attributes are usedinternally for the CHARSXP cache. This fixes a segfault whencalling it on a CHARSXP from C code.o PDF graphics output was producing two instances of anythingdrawn with the symbol font face. (Report from Baptiste Auguie.)o length(x) <- newval and grep() could cause memory corruption.(PR#13837)o If model.matrix() was given too large a model, it could crashR. (PR#13838, fix found by Olaf Mersmann.)o gzcon() (used by load()) would re-open an open connection,leaking a file descriptor each time. (PR#13841)o The checks for inconsistent inheritance reported by setClass()now detect inconsistent superclasses and give better warningmessages.o print.anova() failed to recognize the column labelledP(>|Chi|) from a Poisson/binomial GLM anova as a p-valuecolumn in order to format it appropriately (and as aconsequence it gave no significance stars).o A missing PROTECT caused rare segfaults during calls toload(). (PR#13880, fix found by Bill Dunlap.)o gsub() in a non-UTF-8 locale with a marked UTF-8 inputcould in rare circumstances overrun a buffer and so segfault.o R CMD Rdconv --version was not working correctly.o Missing PROTECTs in nlm() caused "random" errors. (PR#13381 byAdam D.I. Kramer, analysis and suggested fix by Bill Dunlap.)o Some extreme cases of pbeta(log.p = TRUE) are more accurate(finite values < -700 rather than -Inf). (PR#13786)pbeta() now reports on more cases where the asymptoticexpansions lose accuracy (the underlying TOMS708 C code wasignoring some of these, including the PR#13786 example).o new.env(hash = TRUE, size = NA) now works the way it has beendocumented to for a long time.o tcltk::tk_choose.files(multi = TRUE) produces better-formattedoutput with filenames containing spaces. (PR#13875)o R CMD check --use-valgrind did not run valgrind on the package tests.o The tclvalue() and the print() and as.xxx methods for class"tclObj" crashed R with an invalid object -- seen with anobject saved from an earlier session.o R CMD BATCH garbled options -d <debugger> (useful forvalgrind, although --debugger=valgrind always worked)o INSTALL with LazyData and Encoding declared in DESCRIPTIONmight have left options("encoding") set for the rest of thepackage installation.CHANGES IN R VERSION 2.9.1NEW FEATURESo New function anyDuplicated(x) returns 0 (= FALSE) or the indexof the first duplicated entry of x.o matplot(), matlines() and matpoints() now also obey a 'lend'argument, determining line end styles. (Wish of PR#13619).o bw.SJ(), bw.bcv() and bw.ucv() now gain an optional 'tol'argument allowing more accurate estimates.o new.packages() no longer regards packages with the same nameas a member of an installed bundle as 'new' (this is nowconsistent with the dependency checks in install.packages()).It no longer reports on partially installed bundles (sincemembers can be updated individually if a bundle is unbundled).o old.packages() and hence updates.packages() will look forupdates to members of package bundles before updates to thewhole bundle: this allow bundles to be split and installationsupdated.o nlminb() gives better non-convergence messages in some cases.o S3 method dispatch will support S4 class inheritance for S3methods, for primitives and via UseMethod(), if the argumentS3methods=TRUE is given to setClass(). S4 method dispatchwill use S3 per-object inheritance if S3Class() is set on theobject. See ?Methods and the paper referenced there.o R CMD INSTALL is more tolerant of (malformed) packages with a'man' directory but no validly named .Rd files.o R CMD check now reports where options are used that cause someof the checks to be skipped.o RSiteSearch has been updated to be consistent with the newlayout of the search site itself, which now includes separateoptions for vignettes, views, and r-sig-mixed-models, as wellas changed names for r-help. (Contributed by Jonathan Baron.)o That R CMD check makes use of a<pkg>/tests/Examples/<pkg>-Ex.Rout.save file as a referenceresult is now documented in 'Writing R Extensions'.DEPRECATED & DEFUNCTo print.atomic() (defunct since 1.9.0) has been removed since itcaused confusion for an S4 class union "atomic".o png(type="cairo1") is deprecated -- it was only needed forplatforms with 1.0 <= cairo < 1.2.BUG FIXESo The ... argument was not handled properly when ... was foundin the enclosure of the current function, rather than in thefunction header itself. (This caused integrate() to fail incertain cases.)o col2rgb("#00000080", TRUE) would return the background colour.(Reported by Hadley Wickham.)o interaction() now ensures that the levels of the result are unique.o packageDescription() and hence sessionInfo() now report the correctpackage version also for a non-attached loaded namespace ofa version different from the default lib.loc.o smoothScatter() now also works when e.g. xlim[2] < xlim[1].o Invalid use of sprintf() such as sprintf("%S%") now give an errorinstead of a segmentation fault, as do very unusual cases such assprintf("%s", tryCatch(stop(), error=identity)). (It wasalways documented that misuse could crash R inplatform-dependent ways.)o parse_Rd() would mishandle braces when they occurred atthe start of a line within an R string in an Rd file (reportedby Alex Couture-Beil) or when they occurred in an R comment(reported by Mark Bravington).o readNEWS() missed version numbers with more than one digit.o building R --without-x no longer fails (PR#13665)o printCoefmat(cbind(0,1)) now works too (PR#13677)o bw.SJ(c(1:99, 1e6)) now works too.o Rd2txt() could not handle empty descriptions of items in an Rdfile (reported by Mark Bravington), and did not wrap long listsof arguments if they were given in a single item.o stars() would do a partial plot when called with plot = FALSE;it now consistently returns the locations of the stars.o Rd2latex() could not handle empty sections.o old.packages() and hence update.packages() would fail on arepository which contained only one package but with multipleversions of that package.o as.character.Rd() added extra braces when displaying two-argumentmacros. (Report and fix by Manuel Eugster.)o unsplit() was misbehaving in the case of single-column dataframes. (Reported by Will Gray.)o as(I(1), "vector") and similar coercions from objects of"unregistered" S3 classes now work.o srcref records produced by parse() and parse_Rd() did not recordthe encoding of the source file. (Reported by Romain Francois.)o The X11 version of View() was misbehaving in MBCS locales, andPgUp/PgDn now behave better, thanks to a patch from Ei-ji Nakama.o R CMD check looked at the environment variable PDFLATEX, butas from R 2.8.1 R CMD Rd2dvi used R_PDFLATEXCMD inpreference, and that was set by R CMD (and not PDFLATEX). NowR CMD check looks at R_PDFLATEXCMD.o sprintf() now signals an error when the result of single formatspecification would be longer than the limit (8192 bytes); it wouldreturn "somewhat random" results or segfault previously. (PR#13667)Further, arguments of type "language" or "symbol" are no longerallowed, as these, e.g., sprintf("%s", quote(list())), typicallylead to unexpected results or hard to understand error messages.o The new (in 2.9.0) 'stringsAsFactors' argument to expand.grid()was not working: it now does work but has default TRUE forbackwards compatibility.o tcrossprod(<1d-array>, <matrix>) now does work when the argumentsare of compatible dimensions.o qbinom() now is accurate also in (large size, small prob)cases. (PR#13711)o The calculation of the Spearman p-value in cor.test() isslightly more accurate in some cases. (PR#13574)o The digamma(), trigamma() and psigamma() functions could beinaccurate for values of x around 1e-15 due to cancellation.(PR#13714).o median.default() was altered in 2.8.1 to use sum() ratherthan mean(), although it was still documented to use mean().This caused problems for POSIXt objects, for which mean() butnot sum() makes sense, so the change has been reverted.o Assigning an extra 0-length column to a data frame byDF$foo <- value gave a corrupt data frame rather than failing.(PR#13724) This also happened for DF[["foo"]] <- value.o R CMD INSTALL no longer gives a spurious warning about old Rversions ignoring multiple dependencies, if the conditions areknown to be satisfied.o The test for setting dim() allowed a value with two or moreNAs to be set on a 0-length object. (PR#13729) Also, itallowed an even number of negative values.o xtfrm(), rank(), sort() and order() did not always make use ofcustom comparison methods specific to the class of elementsbeing sorted.o Increase NAMED value on 'seq' value in for() loop so loop codecannot modify 'seq' value.o Prevent rectangles of size < 0.5 pixel from disappearing inQuartz when using rastered backend. (PR#13744)o Printing _NA_complex_ had a low-level thinko; patch thanks toBill Dunlap.o CP1257 encoding for postscript/PDF has been corrected. (PR#13736)o aov() with an error term was evaluating the ... arguments in2.9.0 whilst checking their names, so could fail by evaluatingthem in the wrong place. (PR#13733)o The print() method for arima() failed if all coefs were fixed.o R CMD INSTALL --no-latex was not implemented in 2.9.0 (only).o Added a needed PROTECT call in RunFinalizers to handle cases wherethe routine is called recursively from a GC in a finalizer.o Constructing error messages about unused arguments in calls toclosures no longer evaluates the arguments.o qr(x, LAPACK=TRUE) did not coerce integer x to numeric.o qr.coef() misbehaved in the LAPACK case with a matrix RHS, sothat solve(qr(x, LAPACK=TRUE)) gave wrong results. (Found byAvraham Adler, PR#13762 by Ravi Varadhan.)CHANGES IN R VERSION 2.9.0NEW FEATURESo Package 'Matrix' is now a recommended package contained in thebasic R distribution. It provides S4 classes and methods fordense and sparse matrices, often by using the numericallibraries Lapack and from the SuiteSparse collection CHOLMOD,CSparse, and SPQR among others.o pdf() and postscript() gain a 'useKerning' argument to placestrings using kerning (which had previously been ignored indisplay but not in strwidth), based in part on an idea andcode from Ei-ji Nakama. The default is TRUE.Kerning involving spaces is now ignored (it was previouslyonly used in the computation of string widths).o seq.default() and seq.int() ensure that the result is within theinterval [from, to] even when the last value would previouslyhave been slightly out of range because of the allowance forrounding error in computing the number of elements.o boxplot() gains a simple 'matrix' method, enabling boxplot(mat)instead of boxplot(data.frame(mat)).o zip.file.extract() gains an optional 'dir' argument (but useunzip() instead).o source() with 'encoding' specified (and not as "unknown") marksthe encoding of character strings in Latin-1 and UTF-8locales.o parse(text=z) now marks the encoding of character strings inLatin-1 and UTF-8 locales if 'z' is of known encoding (that isall elements are either ASCII or marked as Latin-1 or UTF-8).o sprintf() does stricter error checking on input formats toavoid passing invalid formats to the OS (which have a tendencyto crash under such inputs).o expand.grid() gains a 'stringsAsFactors' argument to ask forautomatic conversion of character vectors to factors (whichhappened for many years but was not previously documented).[This did not actually work prior to R 2.9.1.]o bxp() now computes the 'ylim' including the outliers only if'outline = TRUE'. (Wish of PR#13196)o barplot() gains a 'args.legend' argument. (Wish of PR#13265).o RweaveLatexSetup() now accepts all (and not just some) optionspassed through from Sweave()o cumsum(x) and cumprod(x) for double precision x now use a longdouble accumulator where available and so more closely matchsum() and prod() in potentially being more accurate.o plot() methods for "stepfun" (and hence "ecdf") gain an 'col'argument, allowing to set all three colors simultaneously.o Iterating over a factor in a for loop now coerces to a charactervector (rather than using the integer codes).o data.frame() now recycles columns of list arguments, not justvectors and factors.o plot.ts(plot.type="multiple") now makes use of *.lab and*.axis graphical parameters (wish of PR#13134 and 13135).o Classes can be exported from a name space using the NAMESPACEfile directive 'exportClassPattern' which has the same syntaxas 'exportPattern'.o strftime() now converts its first argument with as.POSIXlt()and so is no longer an alias for format.POSIXLt.o body<-() now treats list values consistently with othertypes: they no longer need to be wrapped in a list() call.o option("pdfbrowser") is now set on Windows as well as on Unix-alikes.o object.size() now returns an object of class "object_size" andhas a print() method.o [col/row]Sums(), *Means() now have an additional '...' argument,so that they can more easily be turned into generic functions.o Package 'tools' contains dependsOnPkgs() to compute reversedependencies.o Strict type checking is now turned on: this catches moreinternal corruptions, and some badly written contributed code.o There are new functions in package 'tcltk', tk_choose.files(),tk_choose.dir() and tk_messageBox(), analogues of functionsavailable on Windows (the last is an analogue of winDialog).o Sys.glob() now does tilde expansion on all platforms.o read.table() and friends gain a 'fileEncoding' argument tomake re-encoding of input just a little bit simpler.o grep() gains an 'invert' argument mimicking 'grep -v/--invert'.o strwrap() now allows a separate prefix for the first line.o grep() has a more efficient sibling grepl() that returns alogical vector.o xfig() has new arguments 'defaultFont' and 'textSpecial'contributed by Sebastian Fischmeister.o parse() and parse_Rd() now point to syntax errors in thereported error context, and include the filename and line andcolumn numbers so smart text editors can jump to the errorlocation.o str(<1d-array>) now writes "[1:n(1d)]" instead of the previousless clear "[, 1:n]".o New function testInstalledPackage() in package 'tools' allowsthe examples (and if they were installed) any package-specifictests to be run on an installed package.testInstalledPackages() can run all the examples and tests inthe standard and/or recommended packages. AlsotestInstalledBasic() can run the basic tests (if installed).o file.copy() now has a 'recursive' argument.o Errors in setOldClass() will cause a previous definition to be restored.o Ambiguities in class inheritance and method selection resultingfrom duplicates in superclasses are now resolved by requiring(if possible) consistency with all the superclass inheritance. Therules for method selection have been revised to take advantage ofthe improved ordering.See ?Methods and the reference there related to inheritance.o New function unzip() in package 'utils' to expand or list ziparchives.o Replacement functions for class() and oldClass() will unsetthe S4 bit when the replacement can't be an S4 object;oldClass() will return the S3 class for S4 objects with slot.S3Class.o clip() takes extra steps to avoid the next graphics callresetting the clip region.o New function sample.int() to provide documented access to theinternal part of sample() (sampling from seq_len(n)).o New version of withVisible() for better handling of cases likewithVisible(eval.parent(....)). Moved to package 'base' with aview to replace .Internal(eval.with.vis) in source() later.o showClass() which is also used to auto-print class definitions, nowmentions the package where the class comes from, if there is one.o simulate(obj) now also works for "glm" objects and for weightedfits, thanks in part to contributions from Ben Bolker andHeather Turner. There is now a means to extend the methodsavailable for "glm" objects, as glm families can have anoptional 'simulate' component.o S4 classes that inherit from any of the "structure" classes orfrom "vector" will turn on methods for all the "Ops" group offunctions when the package containing the classes isloaded. See class?structure.o A mechanism now allows S4 classes to inherit from object types"environment", "externalptr" and symbol ("name"). See ?setClass.o demo() gains 'echo' and 'ask' arguments, with defaults similarto example().o library() no longer checks for the packages merged during there-organization of 1.9.0.o New function poisson.test() in package 'stats' for exact testof rates and rate ratios.o New function isdebugged() indicates whether its argument has thedebug flag set or not.o ls.str() [via print method] now also works when some objects inthe environment are missing().o Subsetting S4-objects (without an explicit "[" method) no longerpreserves the class in cases like setClass("C",contains="list"); This reverts a "bug fix" activated in R 2.8.0.o .packages() and .find.packages() no longer check the packageinfo for installed packages with dumped metadata, since thiswas checked when the package was installed. .packages() onlyconsiders such packages to be validly installed (any otherswere installed in a long-obsolete version of R). Both changesspeed up searches in libraries of thousands of packages.o boxplot() uses butt line endings for its median line(suggestion of Uwe Ligges, PR#13553).o S4 objects passed to a non-default S3 method will be convertedto a valid S3 object with the S3 class. See the section oninheriting from non-S4 classes in ?Classes.o A new class "nonStructure" has been defined; classes that extenda vector class but that should lose their slots under Math orOps functions should extend this class. See class?nonStructure.o axis.POSIXct() now plots in the timezone marked for its inputs(if any) rather than in the local time. The latter was adeliberate choice, but is easy to select by removing the'tzone' attribute. (Suggestion of Dan Kelley.)o A new function classesToAM() returns an adjacency matrixrepresenting the inheritance of the classes specified. Allowsbetter human examination of the patterns, e.g. by using thematrix as input to one of the graph packages (see thedocumentation).o X11options(antialias = "none") now works, for consistency withX11().o sprintf() now allows zero-length arguments (with a zero-lengthresult). (Suggestion of Bill Dunlap.)o unlink() is now able to remove broken symbolic links onUnix-alikes.o New selectSuperClasses() utility in package 'methods'.o HoltWinters() now allows parameters alpha and beta to be fixedat 0 and hence beta = FALSE and gamma = FALSE are used tospecify restricted models.o A new function smoothScatter() has been added to package'graphics'. It is appropriate for very dense scatter plotsand uses density estimation and color to reflect density ofplotting.DEPRECATED & DEFUNCTo allGenerics() is defunct.o Use of allocVector(CHARSXP ...) is defunct and gives an error.o The compatibility define for graphics structure NewDevDesc inGraphicsDevice.h has been removed.o Support for versioned installs (R CMD INSTALL --with-package-versionsand install.packages(installWithVers = TRUE)) has been removed.Packages installed with versioned names will be ignored.o The numeric and power(0.5) forms of argument to make.link()which were deprecated in 2.4.0 are now defunct: use power()directly.o Conversion to Sd and Ssgm by R CMD Rdconv is now defunct.o Support for R --gui=gnome is now defunct (and packagegnomeGUI has been withdrwan as it used a long-obsolete versionof GNOME).o R CMD SHLIB on Windows will call the first target (not 'all') inMakevars[.win] in future versions: so make 'all' the firsttarget if you have any.UTILITIESo R CMD build now also uses a Makevars[.win] file for cleaningup src/.o R CMD Rd2dvi and R CMD check are now able to cope with Cyrilliccharacters in UTF-8 if environment variable _R_CYRILLIC_TEX_is set to a non-empty value and the latex system has suitablefonts (thanks to a hint from Alexey Shipunov).o New function rtags() in package 'utils' that provides etags-likeindexing capabilities for R code files.New front-end script R CMD rtags provides an interface to thertags() function (see R CMD rtags --help for details).o New environment variable R_TEXI2DVICMD to hold the path (if any)to 'texi2dvi' found at configure time: this now provides thedefault to option("texi2dvi").o massage-Examples.pl has been replaced by the R functiontools:::massageExamples().o R CMD REMOVE now uses remove.packages() and hence removes allmembers of a bundle.o R CMD SHLIB is now an R script and has a new option -n aka--dry-run to show what commands would be run. The same codeis used on Unix and Windows.o R CMD Rdconv has new options --package and --version to set thecorresponding fields in HTML conversion.o R CMD check runs the package tests with a custom startup file,currently containing 'options(useFancyQuotes = FALSE)'.Those tests are run by an R script: using a tests/Makefile(undocumented) no longer works.o R CMD config now knows about DYLIB_EXT and SHLIB_EXT, for usein configure files.o R CMD BATCH has a new option --no-timing to suppress printingout the session timing.o R CMD Rd2dvi can now work on an installed package.o R CMD check no longer loads package 'tcltk' when checking forcode problems, so more problems may be reported.o For R CMD SHLIB on Windows the default 'all' target only makesthe DLL, and no longer call targets 'before' and 'after'.Rd CONVERSIONo Rd files have an optional \Rdversion{} section, which ifmissing defaults to 1.0. There is support for version 1.1, aslightly modified version with the following changes:- The warnings for \code{} inside example are suppressed.- Whitespace between arguments in \item and \section isaccepted without a warning (see below).- $ is treated literally in text, even for latex conversions.- \ is only an escape before % { } \ .- \R, \dots and \ldots can be followed by {}, and it isrecommended that they when not followed by whitespace.- The obsolete interpretation of \Alpha etc is no longer done.o Rd conversion now handles ^ ~ < > | correctly in non-codeenvironments (such as \samp), and # and _ even in latexconversion (but $ still needs to be escaped in version 1.0).o Whitespace between first and second arguments is now acceptedfor \item and \section, e.g. \item{foo} {some value}.Previously arguments after whitespace were silently ignored,and a warning is given for version 1.0 files.o The Rd files created by prompt() and friends are declared to beversion 1.1.o \alias now supports the escaping of { as well as of %, and thisis recommended.o parse_Rd(), an experimental parser for Rd files, and Rd2txt(),Rd2HTML(), Rd2latex() and Rd2ex(), even more experimentalconverters, have been added to package 'tools'.o R CMD check runs the package's Rd files through parse_Rd() for astricter syntax check. This can be suppressed by setting_R_CHECK_RD_PARSE_ to FALSE.o Added markup \verb, which displays like \code, but parses asverbatim text. Currently only supported by parse_Rd() andRd2HTML().INSTALLATIONo The shell used by the 'R' script and other shell scriptsintended to be run directly can be specified at installationtime by setting the (precious) configure variable R_SHELL.o libtool has been updated to 2.2.6a.o --with-ICU is now the default: this means that ICU will beused for collation on Mac OS >= 10.4.o make install-tests can be used to install the test files,to allowed an installed version of R to be tested -- see theR-admin manual. This is also supported by the functiontestInstalledPackages() in package 'tools'.o 'make install' using a parallel make should now work.o 'make check' now always re-makes and re-runs the packageexamples, which are now collated in the locale's order (andnot ASCII order).o configure will now set the default optimization level forgfortran on x86_64 Linux to -O as -O2 has caused problems withgfortran 4.3.x.PACKAGE INSTALLATIONo install.packages() is able to infer that repos=NULL wasintended from the extension on the file name specified as 'pkgs'.On Mac OS X it now supports local binary packages with .tar.gzextension. Nonetheless .tgz remains the preferred extensionand is expected in repositories.It now checks >= version dependencies for dependent packages,and so will install a newer version of a dependency if neededand available on the repositories.The library being installed into is considered when lookingfor installed packages if it is not already part of.libPaths() (as INSTALL already does).It has a new argument 'Ncpus' to support parallel installs ofsource packages.o HTML links will be resolved first to the standard packages: thisavoids other installed packages diverting help on e.g. qr()and plot() to themselves. The HTML files are only "touched" ifthey have changed.o A check is done that the R files can be parsed: this bothprevents a broken package without lazy-loading from beinginstalled and gives better diagnostics.o install.packages() gains a 'configure.vars' argument, and boththis and 'configure.args' get their defaults from options().o There is a unified R script for INSTALL on both Unix-alike andWindows that takes option names used by either in the past.It adds --no-multiarch to disable building other than the mainsub-architecture, and allows multiple instances of--configure-args and --configure-vars (which will beconcatenated).New option --install-tests will install any package-specifictests.o Times in the Packaged: and Built: fields are now recorded inUTC, and in most cases in ISO 8601 format.C-LEVEL FACILITIESo A helper function, asCharacterFactor, converts from factors tocharacter vectors.BUG FIXESo The postscript() output for setting text is faster and smaller.o Subsetting a data frame with duplicate column names withoutselecting columns (e.g. z[i,]) no longer makes the columnnames unique. This was never documented, but some packageshave assumed it.o data.frame() no longer ignores row names on objects if thefirst name is empty. (PR#13230: this has been the behaviourfor a long time, but apparently undocumented.)o deparse(control="S_compatible") now never uses backticks.o X-spline drawing is improved for cases where the controlpoints are located well off the edges of the device.The symptom of this problem is the error "reached MAXNUMPTS".o exists() with mode= "any" will no longer run an active binding'sfunction.o format(c(1 + 2i, NA)) no longer has extraneous space in " NA".o mood.test() could fail in 2.8.x on large samples because ofinteger overflow.o heatmap() without a dendrogram could fail. (PR#13512)o Checks for missing values will no longer occasionally result inan infinite loop or stack overflow error, depending on thecompiler. Active bindings are now always considered to benon-missing.o Rd conversion was not accepting \p (as in \pkg} or (when usingPerl 5.10.x) \k (as in \kbd) in any preamble text in a\value{} section, since those are nowadays interpreted byPerl. (PR#13575)o if(as.raw(1)) TRUE now works as expected. (PR#13630)Also, c(as.raw(12), TRUE) or c(raw(3), pi) do.o duplicated(<data frame>, incomparables = NA) now gives theintended error message. (PR#13632)o name handling of as.data.frame() has been sanitized somewhato Evaluating an assignment expression with a string on the lefthand side no longer destructively changes the string to a symbolin the expression.*************************************************** ** 2.8 SERIES NEWS ** ***************************************************CHANGES IN R VERSION 2.8.1 patchedNEW FEATURESo R CMD check has a new argument '--install-args' to passcommand-line arguments to INSTALL.E.g. --install-args="--docs=normal" on Windows if the HTMLHelp Workshop is not installed.o R-Forge has been added to R_HOME/etc/repositories, so it willbe available interactively in setRepositories().o The compiled loess() code has been updated to the currentversion of dloess from Netlib. This includes patches from BenTyner which correct some errors when degree = 0 and hencesolve PR#13570.INSTALLATIONo --with-ICU is now supported (and recommended) on Mac OS X usingApple's supplied port. Note however that the locale categoryLC_COLLATE cannot be changed whilst R is running on Apple'sversion of ICU.Configure supports a wider range of ICU versions on otherOSes: version 3.0 should suffice, and 3.2, 3.8 and 4.0 havebeen tested.BUG FIXESo grid-based plots no longer reset the base text size to thedefault 96dpi in cairo-based bitmap devices.o Rd conversion was incorrectly parsing \\\* and \\\{ (and othercases with an odd number of backslashes greater than one).Text conversion of \code{\ etc} was incorrect (a singlebackslash stands for itself inside \code).\code{} inside \examples{} is now fixed up (but the warningremains, since it will be handled incorrectly in earlierversions of R).o as.matrix.data.frame() could fail if coercion changed thedimension of one of the columns (as e.g. the coercion of a "Surv"object to a character vector does).o When extracting part of a complex list structure using [[]]with a vector index, the extracted part was not marked forduplication on change. (PR#13411)o Assigning an additional element to a pairlist/language elementby x[["foo"]] <- value did not name the additional element.o .Call() and .External() were not accepting "NativeSymbolInfo"and "NativeSymbol" objects as claimed. (Patch from OlafMersmann.)o codoc() was missing some default value mismatches withunescaped backslashes, e.g. final="\\" needs to be written asfinal="\\\\" in the Rd file.The reports on values now give strings in the original quotedformat (with \ and " escaped).o The $<- method for pairlists (including language objects)failed to duplicate if NAMED was 2.o read.table(blank.lines.skip = FALSE) gave a final empty row onfiles with less than 5 lines (PR#13433).o Workaround for a bug in some versions of iconv that was seenwith output lines of more than 10,000 bytes and withre-encoding requested on an output connection.o The fullrefman.{dvi,pdf} duplicated part I in part II (atleast on some systems).o cbind() could crash with a zero-length input and a list result.o pdf(colormodel = "gray") was setting the stroke colour for fills.o file.show() with multiple files would only show multiplecopies of the first one. (PR#13469)o formatC(mode = "character") was documented to work, butdid not. (PR#13474)o besselI(x,.., expon.scaled=TRUE) now gives accurate results forx < 1e5 whereas it previously underflowed for x >~= 1500.Further, besselJ(x,..) also computes up to 1e5 (instead of 1e4).o str() was incorrectly warning about its option component'formatNum' set by strOptions().o nls(algorithm = "port") did not accept the [factor] notation.(PR#13650)o The relational (aka "comparison") operators are now binary, also ina lower level sense, and an expression as "<"(1) is now erronous.o The 'offset' argument for lm() and glm() is not longerdocumented to be allowed to be of length 1: this has not beentrue for a long time.o format.info(x) is now also correct when x has no finite content.o predict.lm() now works correctly when the fit had more thanone offset (possibly specified both in the formula and as anargument). This function is called by predict.glm(), so thesame isses are corrected there.o besselI(x, nu) with nu a negative integer (a singular case) is nowcorrect. (PR#13556)CHANGES IN R VERSION 2.8.1NEW FEATURESo sum() now has a method for "difftime" objects (via the Summarygroup).max(), min() and range() applied to "difftime" object(s) nowreturn a result in the common units of the objects, if thereis one.o installed.packages() is now tolerant of malformed DESCRIPTIONfiles in installed packages (it ignores them, with a warning).o qt() now works for 0 < df < 1.o For consistency with matrix() and array(), dimnames(x) <-list() removes the dimnames (as assigning NULL would do).It was previously an error.o nlminb() copies names from 'start' to the parameter vectorused (for consistency with optim()).o legend() gains a 'title.col' argument: the title colour waspreviously set from the first element of 'text.col' (whichremains the default).o In an Rd file, use of top-level \itemize{} inside a \value{}block is unnecessary and almost always gave a faultyconversion. Most cases are now detected and corrected, butgive a warning as such code will not work correctly in earlierversins of R.Also, use of \code{} inside a code block such as \examples{}will give a erroneous conversion that is now detected andwarned against.o Autoflushing of stdout is turned on when Rd processing, sowarnings/error are likely to appear in the right place inredirected output (such as that from R CMD check).UTILITIESo R_PDFLATEXCMD is added to the environment variables set by'R CMD' and is used by R CMD Rd2dvi.R_LATEXCMD, R_PDFLATEXCMD, R_MAKEINDEXCMD and R_DVIPSCMDdefault to 'latex', 'pdflatex', 'makeindex' and 'dvips'respectively if no suitable executable was found at configuretime (since they might well be available at run time,particularly for binary installations of R). This affectsR CMD Rd2dvi and help(offline=TRUE).R CMD Rd2dvi now gives an explicit error message if latex (orpdflatex) fails.R CMD Rd2dvi gains a --no-index argument: processing somespecial characters on PDF indices gave errors which used to beignored.DEPRECATED & DEFUNCTo R CMD INSTALL --with-package-versions is deprecated (andsupport has always been incomplete on Windows).So is install.packages(installWithVers = TRUE).o Rd conversion to Sd and Ssgm is now deprecated as we no longerhave any means to check the results (and Sd is long obsolete).BUG FIXESo add1.glm() no longer warns if applied to a binomial glm with afactor response.o aggregate.data.frame() now does something sensible with azero-column 'x' rather than failing with an obscure errormessage. It gives an explicit error message if called with azero-row 'x'.o integrate() now accepts integer results from f(): as documented,but only double was accepted.o contrib.url() produced an incorrect URL for the type"mac.binary".o pairwise.wilcox.test() did not pass on the 'paired' argument(caught by Matthias Kohl)o bmp(), jpeg(), and png() on unix with type="cairo" would segfaulton closure if the output file could not be opened.o tiff() on unix would not write the output file for the first pagewhen multiple pages were plotted.o str(1 + structure(1, class = "test")) no longer recurses indefinitely.o pf(x, .., ncp, lower.tail=FALSE, log=TRUE) is much more accuratefor large x now.o dev2bitmap() failed in 2.8.0 if 'taa' and 'gaa' were both NA.o Under rare circumstances equality tests for character stringscould fail to report equality in 2.8.0 in the same way as2.7.2. (This needed a current encoding of Latin-1 or UTF-8,one string whose encoding was marked as that encoding and onethat was marked as "unknown". In that circumstance the twostrings are not actually known to be equal, but earlierversions of R assumed that "unknown" meant the currentencoding, and this is done once again.)o R CMD config could echo messages from GNU make if called fromwithin a Makefile (as e.g. package Rcpp did), especially fromwithin a parallel make run.o Rounding error could affect window(extend=TRUE) when appliedto monthly series. (PR#13272)o Offline help on a Unix-alike now works even if options"latexcmd" and "dvipscmd" contain spaces(e.g. "dvips -Pmy_printer").Informative error messages are given if running latex or dvipsfail.o Using plot.lm() on a "glm" object since 2.7.1 with which=5caused the Pearson rather than deviance residuals to be usedin which=2 or 3 (including in the default case). (Thanks toEffie Greathouse and Greg Snow.)plot.lm() did not report on omitting observations withleverage one if they also had residual exactly zero. This wasseen in example(occupationalStatus).o deparse(nlines=) no longer pads short results with blanklines. (PR#13299)o legend(xpd=) now restores 'xpd' correctly. (PR#12756)o The "formula" method for lines() now works if 'subset' issupplied and no 'data' argument (as that for points() did).o Sweave() now takes the defaults for the options 'pdf.version'and 'pdf.encoding' of its RweaveLatex driver from pdf.options().o prettyNum(x, drop0trailing=TRUE) treated "1.1e20" as "1.1e2"and hence str() did as well, in 2.8.0 only.o dchisq(x, df, ncp) no longer hangs for large x and ncp > 0,and is more accurate in some cases (PR#13309).o installed.packages(lib.loc = D, priority="NA") now also works whenD contains a single package. (PR#13332)o legend(...., merge=TRUE) now warns and has no effect in thecase where no line segments are drawn. (PR#13340)o transform.data.frame() works better when two or more columns areadded.o Deparsing argument lists with non-syntactic names (e.g. that fortransform()) now uses backticks rather than double quotes toproduce syntactically valid output.o matrix() failed to check for 0-length 'dimnames': it nowtreats them as NULL (as array did). (PR#13361)o 0^NA is now NA, not Inf, consistent with x^NA, x != 1.o anova.mlm() did not work if T had only one row (includinge.g. the case M = ~1).o axis.POSIXct() mislabelled for some time ranges of a few hours(reported by Martin Becker).o mantelhaen.test() with 'exact=FALSE' was not respecting'alternative'. It now does one-sided tests similarly toprop.test().o anova.mlm() had trouble with some designs where near-zero rows ofthe tranformation matrix were not removed (caught by Nils Skutara).o Rd conversion was handling expressions like'\item{foo}{see \eqn{x}}' (with one argument to \eqnimmediately followed by a right brace) incorrectly, sometimesgiving a spurious warning about 'missing text'.o R CMD INSTALL used the C locale to install the DESCRIPTIONfile, and so escaped non-ASCII characters in packages with adeclared encoding of "latin1" or "UTF-8". (However, theinstalled DESCRIPTION file was rarely used since the dumpedmetadata are available.)o xspline() now respects inline par settings.It and grid.xspline() now handle the special case of only twocontrol points, and splines with control points that arelocated well outside the device (e.g., a zoomed view of alarger curve). (Both cases were giving the error "reachedMAXNUMPTS").o In setClass("C", contains="list"); x <- new("C", 1:3), x[2:3] nowremains of class "C". So does rep(x, 2) or rep.int(x, 3).[NOTE: This "feature" has been reverted for R 2.9.0, see above]o median.default() now also works for "numeric"-like vectors.o The pdf() device can now handle the case where an image uses avery large number of colours with different levels ofsemi-transparency (alpha-values). It used to segfault.(Also PR#13264.)o window() failed to apply a fuzz to 'start' or 'end' and sosometimes warned incorrectly for time series with 'freq' not apower of two (e.g. 12 or 24).o unique.default() now preserves the "tzone" attribute on"POSIXct" objects.o If all the packages had dependency lists of equal lengths,occasionally install.packages() would compute an incorrectsort order.o col(x, as.factor=TRUE) and row(x, as.factor=TRUE) would failif x had no column (row) names. It was documentedincorrectly, and now returns a matrix factor.o setRepositories() failed if "pkgType" was set to"mac.binary.leopard".o formals<-() changed the body of the function if this was alength-one list.o body<-() failed if the function had no arguments. It nowwarns if discarding elements from a 'value' of type "expression".o qr.coef() failed in the complex case for non-square systems.(PR#13305)o plot.dendrogram(horizontal=TRUE) did not not plot 'edgetext'at the correct locations. (PR#13313)o The starting point for plot.acf(ci.type="ma") was lag 0 when itshould have been lag 1. (PR#13071)o There was an obscure bug with srcrefs, which could put theparser into a condition giving "Error: bad value" on any inputCHANGES IN R VERSION 2.8.0SIGNIFICANT USER-VISIBLE CHANGESo var(), cov(), cor(), sd() etc now by default (when 'use' is notspecified) return NA in many cases where they signalled anerror before.NEW FEATURESo abbreviate() gains an optional argument 'strict' allowing cheapand fast strict abbrevation.o The "lm" methods of add1(), anova() and drop1() warn if they aremis-used on an essentially exact fit.o as.array() is now generic, gains a '...' argument.o New function as.hexmode() for converting integers in hex format.format.hexmode() and as.character.hexmode() gain an 'upper.case'argument.o bitmap() and dev2bitmap() gain support for anti-aliasing.The default type has been changed to 'png16m', which supportsanti-aliasing.o Box.test() gains a 'fitdf' argument to adjust the degrees offreedom if applied to residuals.o browseURL() has a new argument 'encodeIfNeeded' to useURLencode() in cases where it seems likely that would behelpful. (Unfortunately, those are hard to guess.)o by() gains a 'simplify' argument, passed to tapply().o capabilities() gains a new argument "tiff" to report if tiff()is operational.o chol2inv() now treats <numeric(1)> as a [1 x 1]-matrix.o cov() and cor() have the option 'use = "everything"' as default,and so does var() with its default 'na.rm = FALSE'. Thisreturns NA instead of signalling an error for NA observations.Another new option is 'use = "na.or.complete"' which is the defaultfor var(*, na.rm=FALSE).var(double(0), na.rm= L) now returns NA instead of signalling an error,for both L = TRUE or FALSE, as one consequence of these changes.o data.matrix() now tries harder to convert non-numeric columns,via as.numeric() or as(, "numeric").o dev.interactive() is able to recognize the standard screendevices if getOption("device") is a function (as well as by name).o dev.new() gains a '...' argument which can be used to passnamed arguments which will be used if appropriate to thedevice selected.o dimnames(x) <- value extends 'value' if it a list and tooshort, and 'x' is an array. This allows constructions such asdimnames(x)[[1]] <- 1:3 to work whether or not 'x' already hasdimnames.o format(), formatC() and prettyNum() gain a new argument'drop0trailing' which can be used to suppress trailing "0"s.o format() now works for environments; also print(env) and str(env)share the same code for environments.o It is now possible to create and open a text-mode gzfile()connection by explicitly using e.g. open="rt".o New help.request() function for compiling an e-mail to R-helpaccording to "the rules". It is built on the new utility,create.post() on which also bug.report() is based now; boththanks to a contribution by Heather Turner.o help.search() now assumes that non-ASCII items are in latin1if that makes sense (all known examples on CRAN are).o HoltWinters() and decompose() use a (statistically) moreefficient computation for seasonal fits (they used to wasteone period).o intToUtf8() and intToBits() now accept numeric vectors,truncating them to integers.o is.unsorted() gains an argument 'strictly'. It now works forclassed objects with a >= or > method (as incorrectlydocumented earlier).o library() no longer warns about the masking objects that areidentical(.,.) to those they mask.o lockBinding(), unlockBinding(), lockEnvironment() andmakeActiveBinding() now all return invisibly (they alwaysreturn NULL).o mood.test() now behaves better in the presence of ties.o na.action() now works on fits of classes "lm", "glm", ....o optim(.., method="SANN", .., trace=TRUE) is now customizable viathe 'REPORT' control argument, thanks to code proposals byThomas Petzoldt.o The 'factory-fresh' defaults for options("device") have beenchanged to refer to the devices as functions in the grDevicesnamespace and not as names. This makes it more likely thatthe incorrect (since R 2.5.0) assumption in packages thatget(getOption("device"))() will work will catch users of thosepackages.o pch=16 now has no border (for consistency with 15, 17, 18) andhence is now different from pch=19.o pdf() has new arguments 'useDingbats' (set this to FALSE for usewith broken viewers) and 'colormodel'. It now only referencesthe ZapfDingbats font if it is used (for small opaque circles).The default PDF version is now 1.4, since viewers that do notaccept that are now rare.Different viewers were rendering consecutive text() calls on apdf() device in different ways where translucency wasinvolved. The PDF generated has been changed to force eachcall to be rendered separately (which is the way xpdf orghostscript was rendering, but Acrobat was forming atransparency group), which is consistent with other graphicsdevices supporting semi-transparency.o plot.dendrogram() has new arguments (xlim, ylim) which allowszooming into a hiearchical clustering dendrogram.o plot.ecdf() now defaults to pch=19 so as to better convey theleft-closed line segments.o plot.histogram() gains an 'ann' argument. (Wish from Ben Bolker.)o plot(<lm_obj>) now warns when it omits points with leverage onefrom a plot.o Plotmath now recognizes 'aleph' and 'nabla' (the Adobe Symbol'gradient' glyph) as symbol names.o polyroot() no longer has a maximum degree.o The alpha/alphamax argument of the 'nls' and 'mle' profile()methods is used to compute confidence limits for univariatet-statistics rather than a confidence region for all theparameters (and not just those being profiled).o quantile.default() allows 'probs' to stray just beyond [0, 1],to allow for computed values.o New functions rawConnection() and rawConnectionValue() allowraw vectors to be treated as connections.o read.dcf() now consistently gives an error for malformed DCF.o read.fwf() no longer passes its default for 'as.is' toread.table(): this allows the latter's default to be used.o readBin(), writeBin(), readChar() and writeChar() now open aconnection which was not already open in an appropriate binarymode rather than the default mode.readLines(), cat() and sink() now open a connection which wasnot already open in an appropriate text mode rather than thedefault mode.o readCitationFile() (and hence citation) now reads a package'sCITATION file in the package's declared encoding (if there is one).o The behaviour of readLines() for incomplete final lines onbinary-mode connections has been changed to be like blockingrather than non-blocking text-mode connections.o A new reorder.character() method has been added. This allowsuse of 'reorder(x, ...)' as a shorthand for'reorder(factor(x), ...)' when 'x' is a character vector.o round() now computes in long doubles where possible so theresults are more likely to be correct to representation error.o rug() now uses axis()'s new arguments from 2.7.2, hence nolonger draws an axis line.o save() (optionally, but by default) checks for the existenceof objects before opening the file/connection (wish ofPR#12543).o segments(), arrows() and rect() allow zero-lengthcoordinates. (Wish of PR#11192)o set.seed(kind=NULL) now takes 'kind' from a saved seed if theworkspace has been restored or .Random.seed has been set insome other way. Previously it took the 'currently used' value,which was "default" unless random numbers had been used inthe current session. Similarly for the values reported byRNGkind(). (Related to PR#12567.)set.seed() gains a 'normal.kind' argument.o setEPS() and setPS() gain '...' to allow other arguments to bepassed to ps.options(), including overriding 'width' and 'height'.o setTimeLimit() function to set limits on the CPUand/or elapsed time for each top-level computation, andsetSessionTimeLimit() to set limits for the rest of the session.o splinefun() has a new method = "monoH.FC" for monotone Hermitespline interpolation.o sprintf() optionally supports the %a/%A notation of C99 (if theplatform does, including under Windows).o str()'s default method gains a 'formatNum' function argument whichis used for formatting numeric vectors. Note that this is veryslightly not backward compatible.o The summary() method for class "ecdf" now uses a print()method rather than printing directly.o summary.manova() uses a stabler computation of the teststatistics, and gains a 'tol' argument to allow highlycorrelated responses to be explored (with probable loss ofaccuracy). Similar changes have been made to anova.mlm() andanova.mlmlist().o Sweave() now writes concordance information inside a\Sconcordance LaTeX macro, which allows it to be inserted intoPDF output.o system.time() now uses lazy evaluation rather thaneval/substitute, which results in more natural scoping. (PR#11169)o In table(), 'exclude=NULL' now does something also for factorarguments. A new 'useNA' argument allows you to controlwhether to add NA levels unconditionally or only when presentin data. A new convenience function addNA() gives similarfunctionality by adding NA levels to individual factors.o unlink() tries the literal pattern if it does not match withwildcards interpreted -- this helps with e.g. unlink("a[b")which previously needed to be unlink("a\\[b").o update.packages() gains an argument 'oldPkgs', wherenew.packages() and old.packages() get 'instPkgs'. These allowconsideration of only subsets of packages instead of allinstalled ones.o which(b) is somewhat faster now, notably for named vectors, thanksto a suggestion by Henrik Bengtsson.o New generic function xtfrm() as an auxiliary helper forsort(), order() and rank(). This should return a numericvector that sorts in the same way as its input. The defaultmethod supports any class with ==, > and is.na() methods butspecific methods can be much faster.As a side-effect, rank() will now work better on classedobjects, although possibly rather slowly.o X11() and capabilities("X11") now catch some X11 I/O errors thatpreviously terminated R. These were rare and have only beseen with a misconfigured X11 setup on some versions of X11.o The handling of nuls in character strings has been changed --they are no longer allowed, and attempting to create such astring now gives a truncation warning (unlessoptions("warnEscapes") is false).o The user environment and profile files can now be specified viaenvironment variables 'R_ENVIRON_USER' and 'R_PROFILE_USER',respectively.o ?pkg::topic and ?pkg:::topic now find help on 'topic' frompackage 'pkg' (and not help on :: or :::).o ??topic now does help.search("topic"); variations such as??pkg::topic or field??topic are also supported.o There is support for using ICU (International Components forUnicode) for collation, enabled by configure option --with-ICUon a Unix-alike and by a setting in MkRules on Windows.Function icuSetCollate() allows the collation rules (includingthe locale) to be tuned.o If S4 method dispatch is on and S4 objects are found asattributes, show() rather than print() is used to print theS4 attributes.o Starting package tcltk without access to Tk (e.g. no availabledisplay) is now a warning rather than an error, as Tclwill still be usable. (On most platforms it was possible toinhibit Tk by not having DISPLAY set, but not on Windows norMac OS X builds with --with-aqua.)o Using $ on a non-subsettable object (such as a function) isnow an error (rather than returning NULL).o Hexadecimal numerical constants (such as 0xab.cdp+12) may nowcontain a decimal point.o PCRE has been updated to version 7.8 (mainly bug fixes).NEW FEATURES IN PACKAGE 'methods'o S3 classes that are registered by a call to setOldClass() nowhave the S3 class as a special slot, and therefore so doany S4 classes that contain them. This mechanism is used tosupport S4 classes that extend S3 classes, to the extentpossible. See ?Classes, ?setOldClass, and ?S3Class.The treatment of special pseudo-classes "matrix", "array", and"ts" as S4 classes has also been modified to be moreconsistent and, within limitations imposed by specialtreatment of these objects in the base code, to allow otherclasses to contain them. See class?ts.A general feature added to implement "ts" and also"data.frame" as S4 classes is that an S4 class definition canbe supplied to setOldClass() when the S3 class has knownattributes of known class.setOldClass() now saves all the S3 inheritance, allowing thecalls to be built up in stages, rather than including all theS3 classes in each call. Also allows as(x,"S3") to generatevalid S3 inheritance from the stored definition. See ?S3.o S4 methods may now be defined corresponding to "...", bycreating a generic function that has "..." as its signature.A method will be selected and called if all the argumentsmatching "..." are from this class or a subclass. See ?dotsMethods.o New functions S3Part() and S3Class() provide access to thecorresponding S3 object and class for S4 classes that extendeither an S3 class or a basic R object type.o show(<class definition>) now also shows the class name.INSTALLATIONo If sub-architectures are used, a copy of Rscript is installedin ${R_HOME}/bin/exec${R_ARCH} (since that in ${R_HOME}/binand /usr/bin might be overwritten in a subsequent installation).PACKAGE INSTALLATIONo LazyLoad: yes is now the default, so packages wanting to avoidlazy loading must set 'LazyLoad: no' (or an equivalent value) inthe DESCRIPTION file.o R CMD INSTALL will now fail if it finds a non-executable'configure' script in the package -- this usually indicates afile system with insufficient permissions. If anon-executable 'cleanup' script is found and either--clean or --preclean is used, a warning is given.DEPRECATED & DEFUNCTo Use in packages of the graphics headers Rdevices.h andRgraphics.h is defunct: they are no longer installed.o options("par.ask.default") is defunct in favour of"device.ask.default".o The 'device-independent' family "symbol" is defunct: usefont=5 (base) or fontface=5 (grid) instead.o gammaCody() is defunct.o par("gamma") is defunct.o 'methods' package functions getAccess(), getAllMethods(),getClassName(), getClassPackage(), getExtends(),getProperties(), getPrototype(), getSubclasses, getVirtual(),mlistMetaName(), removeMethodsObject() and seemsS4Object() aredefunct.o Use of a non-integer .Random.seed is now an error. (R itselfhas never generated such values, but user code has, andR >= 2.6.0 has given a warning.)o methods::allGenerics() is deprecated.o In package installation, SaveImage: yes is now ignored, andany use of the field will give a warning.o unserialize() no longer accepts character strings as input.o The C macro 'allocString' has been removed -- use 'mkChar' andvariants.o Use of allocVector(CHARSXP ...) is deprecated and gives a warning.UTILITIESo The default for 'stylepath' in Sweave's (default) RweaveLatexdriver is now FALSE rather than TRUE ifSWEAVE_STYLEPATH_DEFAULT is unset : see ?RweaveLatex.To support this, tools::texi2dvi adds the R 'texmf' directoryto the input search path.o R CMD Rd2dvi now previews PDF output (as was documented) ifR_PDFVIEWER is set (as it will normally be on a Unix-alike butnot on Windows, where the file association is used by default).o R CMD check checks for binary executable files (which should notappear in a source package), using a suitable 'file' ifavailable, else by name.o R CMD check now also uses codetools' checks on the body of S4methods.C-LEVEL FACILITIESo R_ReadConsole will now be called with a buffer size of 4096bytes (rather than 1024): maintainers of alternativefront-ends should check that they do not have a smaller limit.o Graphics structure NewDevDesc has been renamed to DevDesc.For now there is a compatibility define in GraphicsDevice.h,but it will be removed in R 2.9.0.o PROTECT and UNPROTECT macros now work even with R_NO_REMAP.BUG FIXESo @ now gives an error (and not just a warning) if it is beingapplied to a non-S4 object.o R CMD appends (not prepends) R's texmf path to TEXINPUTS.o Objects generated by new() from S4 classes should now allsatisfy isS4(object). Previously, prototypes not of objecttype S4 would not be S4 objects. new() applied to basic,non-S4 classes still will (and should) return non-S4 objects.o Functions writing to connections such as writeLines(),writeBin(), writeChar(), save(), dput() and dump() now checkmore carefully that the connections are opened for writing,including connections that they open themselves.Similarly functions which read such as readLines(), scan(),dcf() and parse() check connections for being open for reading.o Equality comparison of factors with <NA> levels now workscorrectly again.o Repainting of open X11 View() windows is now done whilst anX11 dataentry window is in use.o Indexing of data frames with NA column names and a numeric orlogical column index works again even if columns with NA namesare selected.o on.exit() has been fixed to use lexical scope in determiningwhere to evaluate the exit action when the on.exit expressionappears in a function argument.o rank() now consistently returns a double result forties.method = "average" and an integer result otherwise.Previously the storage mode depended on 'na.last' and if anyNAs were present.o The "lm" methods of add1(), and drop1() now also work on a modelfit with na.action = na.exclude.o median(c(x = NA_real_)) no longer has spurious names().o isoreg(x, y) now returns the correct result also when x has ties,in all cases.o What na.action() does is now correctly documented.o source() with echo=TRUE now behaves like ordinary automaticprinting, by using methods::show() for S4 objects.o Several bugs fixed in `?` with topics: it previously died tryingto construct some error messages; for S4 methods, class "ANY"should be used for omitted arguments and default methods.o trace() should create missing traceable classes in the globalenvironment, not in baseenv() where other classes will not befound.o Class inheritance using explicit coerce= methods via setIs()failed to coerce the argument in method dispatch. With thisfixed, a mechanism was needed to prohibit such inheritancewhen it would break the generic function (e.g.,initialize). See ?setIs and ?setGeneric.o RSiteSearch() encodes its query (it seems this is occasionallyneeded on some platforms, but encoding other fields is harmful).o 'incomparables' in match() was looking up indices in the wrongtable.o write.dcf() did not escape "." according to Debian policy(PR#12816).o col2rgb() sometimes opened a graphics device unnecessarily, andcol2rgb(NA) did not return a transparent color, as documented.o pdf(family="Japan") [and other CIDfonts] no longer seg.faultswhen writing "western" text strings.o as.list() applied to an environment now forces promises andreturns values.o Promises capturing calls to sys.parent() and friends did notwork properly when evaluated via method dispatch for internalS3 generics.o The default "pkgType" option for non-CRAN builds of R on Mac OS Xis now correctly "source" as documented.o The default R_LIBS_USER path in AQUA builds now matches theMac-specifc path used by the Mac GUI: ~/Library/R/x.y/libraryo splinefun() with natural splines incorrectly evaluated derivativesto the left of the first knot. (PR#13132, fix thanks toBerwin Turlach)o anova(glm(..., y=FALSE)) now works. (PR#13098)o cut.Date(x, "weeks") could fail if x has only one unique valuewhich fell on a week boundary. (PR#13159)*************************************************** ** 2.7 SERIES NEWS ** ***************************************************CHANGES IN R VERSION 2.7.2 patchedBUG FIXESo within(<dataframe>, { ... }) now also works when '...' removesmore than one column.o Attempting to open an X11() device on a non-existent displaywhen one is already open on another display now gives awarning rather than terminating R via a fatal X11 error.(PR#12628)o source() did not respect the setting of options("keep.source")when setting source references.o seek() now clears the pushback on a text-mode connection ifused to set a new position. (PR#12640)o quartz() would segfault if asked to create a file for bitmapoutput which could not be created. This applied also to thetype="quartz" versions of bmp(), jpeg(), png() and tiff().o dnbinom(0, size, mu = <large>) suffered from cancellation in 2.7.2only.CHANGES IN R VERSION 2.7.2NEW FEATURESo sprintf() returns elements of the result in UTF-8 when theformat or any character input has a corresponding elementdeclared as UTF-8. Similarly for paste(), elements of theresult are in UTF-8 when any input to that element is declaredas UTF-8.o axis() has new arguments 'col.ticks' and 'lwd.ticks' to allowthe colour and line width of ticks to be set separately fromthat of the line (e.g. to set one or the other to transparentor zero width).o legend() has a new argument 'box.col' to set the colour of theenclosing box.o legend() gains a 'xpd' argument to make it easier to place alegend in the margins or outer margins.o stripchart() now passes '...' to title() (as well as toplot.default() and axis()). (Wish of PR#12202)o help.search() has new argument 'searchEngine' to go directlyto the search form: this is needed by users of Firefox 3.0.x,for x <= 6, to workaround a bug in interpreting the searchresults pages.BUG FIXESo Plotmath computed the glyph metrics for the wrong character (andperhaps for a non-existent one) if this was a single-bytecharacter with the top bit set. An example was symbol("\300").o sink() and cat() could divert output to a non-writable connection.o phyper(x, 0,0,0) no longer hangs for huge x and gives 1 for x >= 0.(PR#11813)o plnorm(x, ..., log.p=TRUE) is now correct for x <= 0. (PR#11867)o <data.frame>[, ch] gives an error (again!) when ch is a string notexactly matching the column names, thanks to an oral bug report byMatthew Dowle.o data.frame(x=1:2, y=3:4, row.names=c("a","NA"))[c(2,NA),] hascorrect row names c("NA","NA.1") again.o The GUI data editor for dataframes did not handle escapecharacters in entries properly. (PR#11897)o PCRE has been updated to 7.7 (bugfix release).o package.skeleton() wrongly warned about invalid code_files nameswhen these were not in the current directory.o shapiro.test(c(0,0,1)) now has P value >= 0 (instead of barelynegative).o assign() now warns if given a character vector of length > 1,rather than silently taking the first element.o rcond(<exactly singular matrix>) now gives 0 instead of an error.o There was a memory leak in C function ucstoutf8 used by somegraphics devices.o Plots of profile.mle() objects (package 'stats4') weremisbehaving when the 'which' argument had been used in theircalculation.o dnbinom(x, size, mu=*, ..) is now more accurate for very large'size'. The same applies to pnbinom() and rnbinom().o axis() was ignoring par() mgp[3] if mgp was set in-line.o Closing an X11 View() or dataentry window via its frame'sclose control now works better on some window managers.o Calling lapply() was not handling method dispatch correctly foris.numeric(), is.matrix(), is.array(), log() and the Math2group. This affected data.matrix() which incorrectly regarded"Date" and "POSIXct" objects as numeric, and has been adjustedto do so as exceptions.o package.skeleton() was not looking for non-function objects inits 'environment' argument.o nls() was only finding its 'weights' argument in the case whenall the variables in the formula were of the same length andhence that model.frame() could be used.It was silently ignoring 'subset' and 'na.action' except inthat case. Now they are ignored only if 'data' is a list andvariables taken from 'data' are not all of the same length,in which case a warning is given.o The 'mle' confint() method now takes 'level' into account whensetting 'alpha' for the profile.o within() was not handling correctly expressions that producedNULL columns. (PR#11131)o dev.print() and dev.copy2{eps,pdf}() now ensure that the currentdevice is restored as the active device even if an erroroccurs. (PR#9801)o as.Date() could fail to convert character strings representingdays on which midnight did not exist in the current timezone(as happened in parts of Africa on 1960-01-01).o The automatic placement of legend() with 'title' and areversed 'x' axis was incorrect. (PR#12019)o The use of multiple packages in 'LinkingTo' works again, andnow works when the dependent packages are in the library to beinstalled to (but not in the library path seen by R --vanilla).o bxp() (and hence boxplot) now respects in-line graphicalparameters 'xaxp'/'yaxp' as appropriate. (PR#11463)o barplot(log = "y") failed if there were NAs in the 'height'argument. (PR#11585)o pbeta() is more accurate in some cases with extreme values of'ncp'. (PR#11277).o edit.data.frame() no longer fails if called on a 0-columndata frame and no column is created.o pchisq(x, df=0) was always one even for x < 0; similarly forpgamma(x, alpha=0).o add1() and drop1() now return a P-value of NaN in cases withdf=0 for test="Chisq" (they gave NaN until pchisq was alteredin R 2.6.2).o The default methods of drop1() and add1() now re-evaluate in theobject's formula environment, rather than simply in the parent(informal bug report by Werner Stahel).o The undocumented limit of 8191 bytes on comments (from # tothe end of the line) in R code has been removed.o qgamma() warns if used with shape < 1e-10, when it may beunreliable. (PR#12324)o Installing a source package was not using the package's declaredencoding (if any) as a default encoding for the help.search()database in Meta/hsearch.rds. This could cause packages witha default encoding to have some of their entries rejected byhelp.search() in a multi-byte locale (such as a UTF-8 locale).o duplicated() and unique() now handle 'incomparables' better,and avoid occasional segfaults (PR#12551).o plot(isoreg(x, y)) now plots the points correctly when 'x'is unssorted.o data.frame(row.names=NULL) once again behaves differently fromthe default (as documented).CHANGES IN R VERSION 2.7.1NEW FEATURESo tools::texi2dvi() has a new argument 'texinputs' to allow theTeX and bibtex input paths to be specified (even on MiKTeX).o dev.copy2pdf() gains an 'out.type' argument to allow it to beused with cairo_pdf() or quartz(type = "pdf").o poly() has additional checks against user error (as in PR#11243).o The Mac OS quartz() device draws contiguous lines much faster.o A field containing just a sign is no longer regarded as numeric(it was on all platforms in 2.7.0, but not on most in earlierversions of R). Similarly, '.' is now always non-numeric.o CITATION files are now read in Latin-1: quite a few werefailing if used in a multibyte locale such as UTF-8.o The DESCRIPTION file of a package can specify an 'OS_type' fieldas either 'unix' or 'windows' to confine installation to thatOS type.o HoltWinters() now uses optimize() rather than optim forone-parameter problems which should be more reliable (PR#11469).o axis() now respects the setting of par("xpd") when clipping.o The 'factor' method of format() now preserves names, dims anddimnames in the same way as for character and numeric inputs.(PR#11512)o read.DIF(*, transpose=TRUE) now allows to correctly read DIF filesproduced by some versions of Excel.DEPRECATED & DEFUNCTo The use of unserialize() on character strings is deprecated:that was a format used in R < 2.4.0.o The use of embedded nuls in character strings is deprecated:They will no longer be allowed in R 2.8.0.UTILITIESo R CMD check checks for possible check directories in thesources -- in mid-2008 there were about 20 examples on CRAN.o R CMD build tries harder to clean up the inst/doc directoryfrom the remnants of earlier builds.It also removes any directories with extension .Rcheck, andfiles .DS_Store and ._* (created by tar on Mac OS X under somecircumstances: it now sets environment variables to ask forsuch files not to be created by that tar.)BUG FIXESo Encoding<- on NA_character_ converted it to "NA".o Adobe Symbol was missing from the encodings intools::charset_to_Unicode.o diag(matrix(x, 0, 0)) now returns a 0-length vector of thecorrect mode, instead of always numeric.o The parser sometimes accepted invalid quoted strings in a UTF-8locale.o plot.default(x, y) now dispatches to Axis() methods whethery is NULL or not.o On Mac OS X, the Cocoa Quartz window could close without warningunder certain circumstances (specific autorelease pool flush).o Plotting symbols with separate border and fill colours (e.g.,plot(pch = 21)) now works with transparent 'col', but opaqueor semi-transparent 'bg'. Previously, if 'col' wastransparent then 'bg' was ignored and nothing was drawn.o file.path() did not work correctly in 2.7.0 if the componentshad different encodings.o merge() failed if there were no common columns and one of theinputs had zero rows.o expand.grid() failed if an input had length 0.o match() does again truncate strings at embedded nuls (as newlydocumented in 2.7.0).o Because of a typo, 'pointsize' in png(type="cairo") (and jpeg,bmp, tiff) devices was being interpreted in pixels not bigpoints.o is() was wrong for some S3 class objects with class of lengthgreater than one.o undoc() / codoc() were not checking all S4 methods in some cases.o Use of textConnection(NULL, mode="w") could segfault.o Use of strwidth/height(units="user") (the default) is again anerror before a user coordinate system has been set on thedevice, rather than giving nonsensical values (the effect ofr31367).o Rare string width calculations in package grid were notinterpreting the string encoding correctly.o hasMethods(f, env) {without specified 'package'} now works better.o A missing PROTECT could cause segfaults on stringcomparisons. (PR#11421)o str(structure(1, classID = "Pooh")) now works fine.o A missing PROTECT could cause segfaults in if() if coercion ofthe condition was required or a warning was to be given.o plot(<table>) now uses a sensible default main title.o validObject() called with complete=TRUE did not use inheritedvalidity methods for slot classes.o Several bugs fixed in as(): the initial method lookup was notusing the table with inherited methods (so inheritance had tobe recomputed each time); coerce() should not be calleddirectly--it can insert invalid inherited methods; theconstructed as() methods were not retaining the function'senvironment.o influence.measures(<glm-object>) now computes the sameCook's distance approximations as cooks.distance().o plot(<glm>, which=5) uses more correct Cook's distance contours;(fix to fix to PR#9316).o pdf() and postscript() were not working correctly in 2.7.0 withUTF-8 encoded data in a non-UTF-8 MBCS (e.g. EUC-JP on Unix,CJK locales on Windows).o conformMethod(), called by setMethod(), now checks better aboutargument names in wrong order. Whereas it only warns currently,it is planned to become an error in the future.o The predict() method for prcomp() had an incorrect check forthe number of columns of 'newdata' if the columns were not named.o The axis() function now distinguishes between setting "at" toNULL or a zero-length vector, treating the latter as a requestfor no ticks. This corrects the handling of the "x" parameterto rug().o glob2rx("*[*") now produces a correct regular expression.o The canvas is no longer painted on copy or save in Cocoa Quartz.o identify() in Quartz can now be terminated by either using popupmenu equivalent (Ctrl-click or second mouse button) or by pressingthe <Esc> key. The latter was documented but did not work.o tools:::.check_package_depends() {called from 'R CMD check'} nowalso works correctly when directory-name != package-name.o Source references were sometimes off by a line.o The quartz() parameter 'antialias' is no longer ignored.o The Quartz device is now trying hard to remove anti-aliasingeffects for rasterized backends in plots that use adjacent,borderless rectangles such as image().o The srcfilecopy() function now adds a timestamp to the object itcreates.o parse() would lose a token when run on stdin().o socketConnection() was using internally the class "socket"and not "sockconn", which caused a conflict with make.socket().(PR#11515)o Quartz is now trying harder to find the proper font for a givenfamily which resolves font issues on Mac OS X 10.4. Full fontnames and PostScript names can be used interchangeably. (Note,however that italic/oblique font faces of Helvetica are notincluded in the Mac OS X 10.4 system).o qf() no longer gives NaN when one of df1 and df2 is large andthe other is infinite (including if both are infinite); it is moreaccurate e.g. for qf(1e-18, 2,4).o qbeta(-1e10, 50, 40, log.p=TRUE) no longer hangs.o Cocoa Quartz backend autodetection of display DPI was notcorrect for screens rotated by 90 or 270 degrees.o selectMethod("coerce", .) now uses a correct default for'useInherited', and hence no longer may mess up the method cache.o show() now also works on "unregistered" S3 class objects.o formatC(*, format="fg", flag="#") is no longer dropping trailingzeros.o read.table(file = stdin()) with invalid input could leave theconnection in an invalid state and hence cause a latersegfault. (PR#11627)o read.DIF() did not obey the default 'stringsAsFactors = TRUE'.o The 'noquote' method for c() now works correctly with three ormore arguments.o symbol() in plotmath expressions works again with non-ASCIIinput on devices that use UTF-8 for the symbol font.CHANGES IN R VERSION 2.7.0SIGNIFICANT USER-VISIBLE CHANGESo The default graphics device in non-interactive use is nowpdf() rather than postscript(). [PDF viewers are nowmore widely available than PostScript viewers.]The default width and height for pdf() and bitmap() have beenchanged to 7 (inches) to match the screen devices.o Most users of the X11() device will see a new device that hasdifferent fonts, anti-aliasing of lines and fonts andsupports semi-transparent colours.o Considerable efforts have been made to make the default outputfrom graphics devices as similar as possible (and inparticular close to that from postscript/pdf). Many deviceswere misinterpreting 'pointsize' in some way, for example asbeing in device units (pixels) rather than in points.o Packages which include graphics devices need to be re-installedfor this version of R, with recently updated versions.NEW FEATURESo The apse code used by agrep() has been updated to version0.16, with various bug fixes.agrep() now supports multibyte character sets.o any() and all() avoid coercing zero-length arguments (whichused a surprising amount of memory) since they cannot affectthe answer.Coercion of other than integer arguments now gives a warningas this is often a mistake (e.g. writing all(pr) > 0 insteadof all(pr > 0) ).o as.Date(), as.POSIXct() and as.POSIXlt() now convert numericarguments (days or seconds since some epoch) provided the'origin' argument is specified.o New function as.octmode() to create objects such as filepermissions.o as.POSIXlt() is now generic, and it and as.POSIXct() gain a'...' argument. The character/factor methods now accept a'format' argument (analogous to that for as.Date).o New function browseVignettes() lists available vignettes in anHTML browser with links to PDF, Rnw, and R files.o There are new capabilities "aqua" (for the AQUA GUI and quartz()device on Mac OS X) and "cairo" (for cairo-based graphicsdevices).o New function checkNEWS() in package 'tools' that detects commonerrors in NEWS file formatting.o deparse() gains a new argument 'nlines' to limit the number oflines of output, and this is used internally to make severalfunctions more efficient.o deriv() now knows the derivatives of digamma(x), trigamma(x)and psigamma(x, deriv) (wrt to x).o dir.create() has a new argument 'mode', used on Unix-alikes(only) to set the permissions on the created directory.o Where an array is dropped to a length-one vector by drop() or[, drop = TRUE], the result now has names if exactly one ofthe dimensions was named. (This is compatible with S.)Previously there were no names.o The 'incomparables' argument to duplicated(), unique() andmatch() is now implemented, and passed to match() from merge().o dyn.load() gains a 'DLLpath' argument to specify the path fordependent DLLs: currently only used on Windows.o The spreadsheet edit() methods (and used by fix()) for dataframes and matrices now warn when classes are discarded.When editing a data frame, columns of unknown type (that isnot numeric, logical, character or factor) are now convertedto character (instead of numeric).o file.create() has a new argument 'showWarnings' (default TRUE)to show an informative warning when creation fails, anddir.create() warns under more error conditions.o New higher-order functions Find(), Negate() and Position().o [dpqr]gamma(*, shape = 0) now work as limits of 'shape -> 0',corresponding to the point distribution with all mass at 0.o An informative warning (in addition to the error message) willbe given when the basic, extended or perl mode of grep(),strsplit() and friends fails to compile the pattern.o More study is done of perl=TRUE patterns in grep() and friendswhen length(x) > 10: this should improve performance on longvectors.o grep(), strsplit() and friends with fixed=TRUE or perl=TRUEwork in UTF-8 and preserve the UTF-8 encoding for UTF-8 inputswhere supported.o help.search() now builds the database about 3x times faster.o iconv() now accepts "UTF8" on all platforms (many did, but note.g. libiconv as used on Windows).o identity() convenience function to be used for programming.o In addition to warning when 'pkgs' is not found,install.packages() now reports if it finds a valid packagewith only a case mismatch in the name.o intToUtf8() now marks the Encoding of its output.o The function is() now works with S3 inheritance; that is, withobjects having multiple strings in the class attribute.o Extensions to condition number computation for matrices, notablycomplex ones are provided, both in kappa() and the new rcond().o list.files() gains a 'ignore.case' argument, to allowcase-insensitive matching on some Windows/MacOS file systems.o ls.str() and lsf.str() have slightly changed arguments anddefaults such that ls.str() {no arguments} works when debugging.o Under Unix, utils::make.packages.html() can now be used directlyto set up linked HTML help pages, optionally without creatingthe package listing and search database (which can be muchfaster).o new.packages() now knows about the front-end package gnomeGUI(which does not install into a library).o optim(*, control = list(...)) now warns when '...' containsunexpected names, instead of silently ignoring them.o The options "browser" and "editor" may now be set to functions,just as "pager" already could.o packageDescription() makes use of installed metadata whereavailable (for speed, e.g. in make.packages.html()).o pairwise.t.test() and pairwise.wilcox.test() now more explicitlyallow paired tests. In the former case it is now flagged as anerror if both 'paired' and 'pool.SD' are set TRUE (formerly,'paired' was silently ignored), and one-sided tests are generatedaccording to 'alternative' also if 'pool.SD' is TRUE.o paste() and file.path() are now completely internal, for speed.(This speeds up make.packages.html(packages=FALSE)severalfold, for example.)o paste() now sets the encoding on the result under somecircumstances (see ?paste).o predict.loess() now works when loess() was fitted withtransformed explanatory variables, e.g, loess(y ~ log(x) + log(z)).o print(<data.frame>)'s new argument 'row.names' allows to suppressprinting rownames.o print() and str() now also "work" for 'logLik' vectors longer thanone.o Progress-bar functions txtProgressBar(), tkProgressBar() inpackage tcltk and winProgressBar() (Windows only).o readChar() gains an argument 'useBytes' to allow it to read afixed number of bytes in an MBCS locale.o readNEWS() has been moved to the tools package.o round() and signif() now do internal argument matching ifsupplied with two arguments and at least one is named.o New function showNonASCII() in package tools to aid detectionof non-ASCII characters in .R and .Rd files.o The [dpq]signrank() functions now typically use considerablyless memory than previously, thanks to a patch from IvoUgrina.o spec.ar() now uses frequency(x) when calculating thefrequencies of the estimated spectrum, so that for monthlyseries the frequencies are now per year (as for spec.pgram)rather than per month as before.o spline() gets an 'xout' argument, analogously to approx().o sprintf() now does all the conversions needed in a first pass iflength(fmt) == 1, and so can be many times faster if calledwith long vector arguments.o [g]sub(useBytes = FALSE) now sets the encoding on changedelements of the result when working on an element of knownencoding. (This was previously done only for perl = TRUE.)o New function Sys.chmod(), a wrapper for 'chmod' on platformswhich support it. (On Windows it handles only the read-onlybit.)o New function Sys.umask(), a wrapper for 'umask' on platformswhich support it.o New bindings ttk*() in package tcltk for the 'themed widgets'of Tk 8.5. The tcltk demos make use of these widgets whereavailable.o write.table(d, row.names=FALSE) is faster when 'd' has millions ofrows; in particular for a data frame with automatic row names.(Suggestion from Martin Morgan.)o The parser limit on string size has been removed.o If a NEWS file is present in the root of a source package, itis installed (analogously to LICENSE, LICENCE and COPYING).o Rd conversion to 'example' now quotes aliases which containspaces.o The handling of DST on dates outside the range 1902-2037 hasbeen improved. Dates after 2037 are assumed to have the sameDST rules as currently predicted for the 2030's (rather thanthe 1970s), and dates prior to 1902 are assumed to have no DSTand the same offset as in 1902 (if known, otherwise as in the1970s).o On platforms where we can detect that mktime sets errno(e.g. Solaris and the code used on Windows but not Linux norMac OS X), 1969-12-31 23:59:59 GMT is converted from POSIXltto POSIXct as -1 and not NA.o The definition of 'whitespace' used by the parser is slightlywider: it includes Unicode space characters on Windows and inUTF-8 locales on machines which use Unicode wide characters.o The src/extra/intl sources have been updated to those fromgettext 0.17.o New flag --interactive on Unix-alikes forces the session to beinteractive (as --ess does on Windows).o x[<zero-length>] <- NULL is always a no-op: previouslytype-checking was done on the replacement value and so thisfailed, whereas we now assume NULL can be promoted to anyzero-length vector-like object.Other cases of a zero-length index are done more efficiently.o There is a new option in Rd markup of \donttest{} to markexample code that should be run by example() but not tested(e.g. because it might fail in some locales).o The error handler in the parser now reports line numbers formore syntax errors (MBCS and Unicode encoding errors, linelength and context stack overflows, and mis-specified argumentlists to functions).o The "MethodsList" objects originally used for method selectionare being phased out. New utilities provide simpleralternatives (see ?findMethods), and direct use of the manglednames for the objects is now deprecated.o Creating new S4 class and method definitions in an environmentthat could not be identified (as package, namespace or global)previously generated an error. It now results in creating andusing an artificial package name from the current date/time,with a warning. See ?getPackageName.o Unix-alikes now give a warning on startup if locale settingsfail. (The Windows port has long done so.)o Parsing and scanning of numerical constants is now done by R'sown C code. This ensures cross-platform consistency, andmitigates the effects of setting LC_NUMERIC (within base R itonly applies to output -- packages may differ).The format accepted is more general than before and includesbinary exponents in hexadecimal constants: see?NumericConstants for details.o Dependence specifications for R or packages in the Dependsfield in a DESCRIPTION file can now make use of operators< > == and != (in addition to <= and >=): such packages willnot be installable nor loadable in R < 2.7.0.There can be multiple mentions of R or a package in the Dependsfield in a DESCRIPTION file: only the first mention will beused in R < 2.7.0.GRAPHICS CHANGESo The default graphics devices in interactive andnon-interactive sessions are now configurable via environmentvariables R_INTERACTIVE_DEVICE and R_DEFAULT_DEVICErespectively.o New function dev.new() to launch a new copy of the defaultgraphics device (and taking care if it is "pdf" or"postscript" not to trample on the file of an already runningcopy).o dev.copy2eps() uses dev.displaylist() to detect screendevices, rather than list them in the function.o New function dev.copy2pdf(), the analogue of dev.copy2eps().o dev.interactive() no longer treats a graphics device asinteractive if it has a display list (but devices can stillregister themselves on the list of interactive devices).o The X11() and windows() graphics devices have a new argument'title' to set the window title.o X11() now has the defaults for all of its arguments set by thenew function X11.options(), inter alia replacing options"gamma", "colortype" and "X11fonts".o ps.options() now warns on unused option 'append'.xfig() no longer takes default arguments from ps.options().(This was not documented prior to 2.6.1 patched.)pdf() now takes defaults from the new function pdf.options()rather that from ps.options() (and the latter was notdocumented prior to 2.6.1 patched).The defaults for all arguments other than 'file' inpostscript() and pdf() can now be set by ps.options() orpdf.options()o New functions setEPS() and setPS() as wrappers to ps.options()to set appropriate defaults for figures for inclusion in otherdocuments and for spooling to a printer respectively.o The meaning of numeric 'pch' has been extended where MBCSes aresupported. Now negative integer values indicate Unicodepoints, integer values in 32-127 represent ASCII characters,and 128-255 are valid only in single-byte locales.(Previously what happened with negative pch values wasundocumented: they were replaced by the current setting ofpar("pch").)o Graphics devices can say if they can rotate text well(e.g. postscript() and pdf() can) and if so the device'snative text becomes the default for contour labels rather thanusing Hershey fonts.o The setting of the line spacing (par("cra")[2]) on the X11() andwindows() devices is now comparable with postscript() etc, androughly 20% smaller than before (it used to depend on thelocale for X11). (So is the pictex() device, now 20% larger.)This affects the margin size in plots, and should result inbetter-looking plots.o There is a per-device setting for whether new frames needconfirmation. This is controlled by either par("ask") orgrid.prompt() and affects all subsequent plots on the deviceusing base or grid graphics.o There is a new version of the X11() device based on cairographics which is selected by type "cairo" or "nbcairo", andis available on machines with cairo installed and preferablypango (which most machines with gtk+ >= 2.8 will have). Thisversion supports translucent colours and normally does abetter job of font selection so it has been possible todisplay (e.g.) English, Polish, Russian and Japanese text ona single X11() window. It is the default where available.There is a companion function, savePlot(), to save the currentplot to a PNG file.On Unix-alikes, devices jpeg() and png() also accepttype = "cairo", and with that option do not need a runningX server. The meaning of capabilities("jpeg") andcapabilities("png") has changed to reflect this. On MacOS X,there is a further type = "quartz". The default type isselected by the new option "bitmapType", and is "quartz" or"cairo" where available.Where cairo 1.2 or later is supported, there is a svg() deviceto write SVG files, and cairo_pdf() and cairo_ps() devices towrite (possibly bitmap) PDF and postscript files via cairo.Some features require cairo >= 1.2, and some which arenominally supported under 1.2 seem to need 1.4 to work well.o There are new bmp() and tiff() devices.o New function devSize() to report the size of the currentgraphics device surface (in inches or device units). Thisgives the same information as par("din"), but independent ofthe graphics subsystem.o New base graphics function clip() to set the clipping region (inuser coordinates).o New functions grconvertX() and grconvertY() to convert betweencoordinate systems in base graphics.o identify() recycles its 'labels' argument if necessary.o stripchart() is now a generic function, with default andformula methods defined. Additional graphics parameters maybe included in the call. Formula handling is nowsimilar to boxplot().o strwidth() and strheight() gain 'font' and 'vfont' arguments andaccept in-line pars such as 'family' in the same way as text()does. (Longstanding wish of PR#776)o example(ask=TRUE) now applies to grid graphics (e.g. fromlattice) as well as to base graphics.o Option "device.ask.default" replaces "par.ask.default" now itapplies also to grid.prompt().o plot.formula() only prompts between plots for interactivedevices (it used to prompt for all devices).o When plot.default() is called with y=NULL it now calls Axis()with the 'y' it constructs rather than use the default axis.DEPRECATED & DEFUNCTo In package installation, SaveImage: yes is defunct andlazyloading is attempted instead.o $ on an atomic vector or S4 object is now defunct.o Partial matching in [[ is now only performed if explicitlyrequested (by exact=FALSE or exact=NA).o Command-line completion has been moved from package 'rcompgen'to package 'utils': the former no longer exists as a separatepackage in the R distribution.o The S4 pseudo-classes "single" and double have been removed.(The S4 class for a REALSXP is "numeric": for back-compatibilityas(x, "double") coerces to "numeric".)o gpar(gamma=) in the grid package is now defunct.o Several S4 class definition utilities, get*(), have been saidto be deprecated since R 1.8.0; these are now formally deprecated.Ditto for removeMethodsObject().o Use of the graphics headers Rgraphics.h and Rdevices.h isdeprecated, and these will be unavailable in R 2.8.0.(They are hardly used except in graphics devices, for whichthere is an updated API in this version of R.)o options("par.ask.default") is deprecated in favour of"device.ask.default".o The 'device-independent' family "symbol" is deprecated as it washighly locale- and device-dependent (it only did somethinguseful in single-byte locales on most devices) and font=5(base) or fontface=5 (grid) did the job it was intended to domore reliably.o gammaCody() is now formally deprecated.o Two low-level functions using MethodsList metadata objects(mlistMetaName() and getAllMethods()) are deprecated.o Setting par(gamma=) is now deprecated, and the windows()device (the only known example) no longer allows it.o The C macro 'allocString' will be removed in 2.8.0 -- use'mkChar', or 'allocVector' directly if really necessary.INSTALLATIONo Tcl/Tk >= 8.3 (released in 2000) is now required to buildpackage tcltk.o configure first tries TCL_INCLUDE_SPEC and TK_INCLUDE_SPECwhen looking for Tcl/Tk headers. (The existing scheme didnot work for the ActiveTcl package on Mac OS X.)o The Windows build only supports Windows 2000 or later (XP,Vista, Server 2003 and Server 2008).o New option --enable-R-static-lib installs libR.a which canbe linked to a front-end via 'R CMD config --ldflags'.The tests/Embedding examples now work with a static Rlibrary.o Netscape (which was discontinued in Feb 2008) is no longerconsidered when selecting a browser.o xdg-open (the freedesktop.org interface tokfmclient/gnome-open/...) is considered as a possible browser,after real browsers such as firefox, mozilla and opera.o The search for tclConfig.sh and tkConfig.sh now only looks indirectories with names containing $(LIBnn) in the hope offinding the version for the appropriate architecture(e.g. x86_64 or i386).o libtool has been updated to version 2.2.o Use of --with-system-zlib, --with-system-bzlib or--with-system-pcre now requires version >= 1.2.3, 1.0.5, 7.6respectively, for security.UTILITIESo Rdconv now removes empty sections including alias and keywordentries, with a note.o Keyword entries are no longer mandatory in Rd files.o R CMD INSTALL now also installs tangled versions of all vignettes.o R CMD check now warns if spaces or non-ASCII characters areused in file paths, since these are not in general portable.o R CMD check (via massage-Examples.pl) now checks all exampleswith a 7 inch square device region on A4 paper, forlocale-independence and to be similar to viewing examples onan on-screen device.If a package declares an encoding in the DESCRIPTION file,the examples are assumed to be in that encoding when runningthe tests. (This avoids errors in running latin1 examples in aUTF-8 locale.)o R CMD check uses pdflatex (if available) to check the typesetversion of the manual, producing PDF rather than DVI. (Thisis a better check since the package reference manuals on CRANare in PDF.)o R CMD Rd2dvi gains a --encoding argument to be passed toR CMD Rdconv, to set the default encoding for conversions.If this is not supplied and the files are package sources andthe DESCRIPTION file contains an Encoding field, that is usedfor the default encoding.o available.packages() (and hence install.packages() etc) nowsupports subdirectories in a repository, andtools::write_PACKAGES() can now produce PACKAGES filesincluding subdirectories.o The default for 'stylepath' in Sweave's (default) RweaveLatexdriver can be set by the environment variableSWEAVE_STYLEPATH_DEFAULT: see ?RweaveLatex.C-LEVEL FACILITIESo Both the Unix and Windows interfaces for embedding now makeuse of 'const char *' declarations where appropriate.o Rprintf() and REprintf() now use 'const char *' for their formatargument -- this should reduce warnings when called from C++.o There is a new description of the interface for graphicsdevices in the 'R Internals' manual, and several new entrypoints. The API has been updated to version R_GE_version = 5,and graphics devices will need to be updated accordingly.o Graphics devices can now select to be sent text in UTF-8, evenif the current locale is not UTF-8 (and so enable text enteredin UTF-8 to be plotted). This is used by postscript(), pdf()and the windows() family of devices, as well as the newcairo-based devices.o More Lapack routines are available (and declared in R_Ext/Lapack.h),notably for (reciprocal) condition number estimation of complexmatrices.o Experimental utility R_has_slot supplementing R_do_slot.o There is a new public interface to the encoding info stored onCHARSXPs, getCharCE and mkCharCE using the enumeration typecetype_t.o A new header 'R_ext/Visibility.h' contains some definitions forcontrolling the visibility of entry points, and how to controlvisibility is now documented in 'Writing R Extensions'.BUG FIXESo pt(x, df) is now even more accurate in some cases (e.g. 12 insteadof 8 significant digits), when x^2 << df, thanks to a remark fromIan Smith, related to PR#9945.o co[rv](use = "complete.obs") now always gives an error if thereare no complete cases: they used to give NA ifmethod = "pearson" but an error for the other two methods.(Note that this is pretty arbitrary, but zero-length vectorsalways give an error so it is at least consistent.)Since sd(na.rm=TRUE) and var(na.rm=TRUE) both call cov(use ="complete.obs"), this applies also to them.cor(use="pair") used to give diagonal 1 even if the variablewas completely missing for the rank methods but NA for thePearson method: it now gives NA in all cases.cor(use="pair") for the rank methods gave a matrix result withdimensions > 0 even if one of the inputs had 0 columns.o Supplying edit.row.names = TRUE when editing a matrix withoutrow names is now an error and not a segfault. (PR#10500)o The error handler in the parser reported unexpected& as && and | as ||.o ps.options(reset = TRUE) had not reset for a long time.o paste() and file.path() no longer allow NA_character_ fortheir 'sep' and 'collapse' arguments.o by() failed for 1-column matrices and dataframes. (PR#10506)However, to preserve the old behaviour, the default methodwhen operating on a vector still passes subsets of the vectorto FUN, and this is now documented.o Better behaviour of str.default() for non-default'strict.width' (it was calling str() rather than str.default()internally); also, more useful handling of options("str").o wilcox.test(exact=FALSE, conf.int=TRUE) could fail in someextreme two-sample problems. (Reported by Wolfgang Huber.)o par(pch=) would accept a multi-byte string but only use thefirst byte. This would lead to incorrect results in an MBCSlocale if a non-ASCII character was supplied.o There are some checks for valid C-style formats in, e.g.png(filename=). (PR#10571)o vector() was misinterpreting some double 'length' values, e.g,NaN and NA_real_ were interpreted as zero. Also, invalidtypes of 'length' were interpreted as -1 and hence reported asnegative. (length<- shared the code and hence the samemisinterpretations.)o A basic class "S4" was added to correspond to the "S4" objecttype, so that objects with this type will print, etc. Theclass is VIRTUAL, since all actual S4 objects must have a realclass.o Classes with no slots that contain only VIRTUAL classes are nowVIRTUAL, as was intended but confused by having an empty S4object as prototype. ## backed out temporarily ##o format.AsIs() discarded dimnames, causing dataframes with matrixvariables to be printed without using the column names, unlikewhat happens in S-PLUS (Tim Hesterberg, PR#10730).o xspline() and grid::grid.xspline() work in device coordinatesand now correct for anisotropy in the device coordinatesystem.o grid.locator() now indicates to the graphics device that it isis in 'graphics input' mode (as locator() and identify()always have). This means that devices can now indicate the'graphics input' mode by e.g. a change of cursor.o Locales without encoding specification and non-UTF-8 localesnow work properly on Mac OS X. Note that locales withoutencoding specification always use UTF-8 encoding in Mac OS X(except for specials "POSIX" and "C") - this is different fromother operating systems.o iconv() now correctly handles to="" and from="" on Mac OS X.o In diag()'s argument list, drop the explicit default (' = n')for 'ncol' which is ugly when making diag() generic.o S4 classes with the same name from different packages were notrecognized because of a bug in caching the new definition.o jpeg() and png() no longer maintain a display list, as theyare not interactive devices.o Using attr(x, "names") <- value (instead of the correctnames<-) with 'value' a pairlist (instead of the correctcharacter vector) worked incorrectly. (PR#10807)o Using [<- to add a column to a data frame dropped otherattributes whereas [[<- and $<- did not: now all preserveattributes. (PR#10873)o File access functions such as file.exists(), file.info(),dirname() and unlink() now treat an NA filename as anon-existent file and not the file "NA".o r<foo>(), the random number generators, are now more consistentin warning when NA's (specifically NaN's) are generated.o rnorm(n, mu = Inf) now returns rep(Inf, n) instead of NaN;similar changes are applied to rlnorm(), rexp(), etc.o [l]choose() now warns when rounding non-integer 'k' instead ofdoing so silently. (May help confused users such as PR#10766.)o gamma() was warning incorrectly for most negative values as beingtoo near a negative integer. This also affected otherfunctions making use of its C-level implementation.o dumpMethod() and dumpMethods() now work again.o package.skeleton() now also works for code_files with onlymetadata (e.g. S4 setClass) definitions; it handles S4 classes andmethods, producing documentation and NAMESPACE exports if requested.o Some methods package utilities (implicitGeneric(), makeGeneric())will be more robust in dealing with primitive functions (not auseful idea to call them with primitives, though)o Making a MethodsList from a function with no methods table willreturn an empty list, rather than cause an error (questionablya bug, but caused some obscure failures).o setAs() now catches 2 arguments in the method definition, ifthey do not match the arguments of coerce().o S4 methods with missing arguments in the definition are handledcorrectly when non-signature arguments exist, and check forconflicting local names in the method definition.o qgamma() and qchisq() could be inaccurate for small p,e.g. qgamma(1.2e-10, shape = 19) was 2.52 rather than 2.73.o dbeta(.., ncp) is now more accurate for large ncp, and typically nolonger underflows for give.log = TRUE.o coerce() is now a proper S4 object and so prints correctly.o @ now checks it is being applied to an S4 object, and if notgives a warning (which will become an error in 2.8.0).o dump() and friends now warn that all S4 objects (even thosebased on vectors) are not source()able, with a stronger wording.o read.dcf(all = TRUE) was leaking connections.o scan() with a non-default separator could skip nul bytes,including those entered as \0 with allowEscapes=TRUE. Thiswas different from the default separator.o determinant(matrix(,0,0)) now returns a correct "det" result;also value 1 or 0 depending on 'logarithm', rather than numeric(0).o Name space 'grDevices' was not unloading its DLL when thename space was unloaded.o getNativeSymbolInfo() was unaware of non-registered Fortrannames, because one of the C support routines ignored them.o load() again reads correctly character strings with embedded nuls.(This was broken in 2.6.x, but worked in earlier versions.)*************************************************** ** 2.6 SERIES NEWS ** ***************************************************CHANGES IN R VERSION 2.6.2 patchedBUG FIXESo src/extra/pcre has been updated to PCRE 7.6 (bugfix release).o unlink(..., recursive=TRUE) no longer crashes on some platformsif a directory cannot be opened.o Loading in 2.6.2 a saved workspace could give an unimportantwarning in a non-UTF-8 multibyte locale (in particular a CJKlocale on Windows) which is now suppressed.o print() methods are more consistent in returning the originalargument invisibly.o Using the X11 data editor (e.g. via edit(), fix() or View())could crash if the 'End' key was used and all the columnswould have fitted into the window.o Creating a new page on an X11() device (by plot.new() orgrid.newpage()) did not flush out the XClearWindow call, sothe X11 window might not be refreshed immediately.o libtool has been updated to version 1.5.26, which avoidsmany spurious configure warnings on Darwin/Mac OS X.o l10n_info() now recognizes how Darwin/Mac OS X reportsLatin-1 locales (as charset ISO8859-1 rather than ISO-8859-1).o Checking examples which used grid (e.g. via lattice) withoutattaching grid no longer give errors from grid_plot_hook().o kappa(m, exact=TRUE) no longer wrongly uses 'exact=FALSE' when mis an 'lm' or 'qr' object because the kappa.tri(x, exact=TRUE)now works correctly.o help(topic, offline=TRUE) misbehaved when there were multiplematches to 'topic'. (PR#10859)o The 'multilib' changes on Linux broke the use ofsub-architectures without a main architecture.o source(echo=TRUE) would skip lines consisting entirely of theletter t. (PR#10923)o bzip2 has been updated to 1.0.5 (security fix).CHANGES IN R VERSION 2.6.2NEW FEATURESo colnames(DF) is now also fast for large dataframes DF withautomatic row.names. Note that the correct usage isnames(DF). (PR#10470)o tools::texi2dvi() works around the failure of 'texi2dvi --quiet'to be quiet in texinfo 4.11.o On Linux, parallel 32/64-bit installations are supported usingmultilib.BUG FIXESo A compilation problem on one system where glob was not foundhas been corrected. (PR#10468)o The "profile.nls" method of plot() was losing the x axis labels.o array() computed the total number of entries in the array beforecoercing the dimensions to integer. (Reported by Allen McIntosh.)o persp() misreported errors in the y parameter. (Reported by AllenMcIntosh.)o source("clipboard", echo=TRUE) and file("clipboard", open="rt")gave spurious errors. (Reported by Fernando Saldanha.)o attributes<-() stripped any existing attributes before checkingthat all elements of the right-hand side had names.o rbinom(n, size, *) gave NaN when 'size > .Machine$integer.max'.o print.summary.lm() is now consistent in the capitalization of"R-squared".o confint() misreported on some rank-deficient lm() models.(PR#10496) This could also occur in the default method.o \code{\var{<name>}} was not rendered correctly to latex in Rdfiles for non-alphabetic arguments <name>.o In 2.6.1, curve(*, add=TRUE) used a wrong default 'xlim' when xcoordinates were logged.o The Java-based search in help.start() now only requires aJVM >= 1.4 (2.6.1 accidentally required >= 1.5).o The default method for range() was omitting 'na.rm' fornon-numeric objects such as those of class "Date". (PR#10508)o cut(x, breaks=<n>) misbehaved on a constant vector of negativevalues.o bxp(), the plotting engine of boxplot(), no longer plots stapleticks multiple times. (PR#10499)o The automatic detection of the domain for message translationwas not working correctly for messages in message(), warning()and stop() in packages other than 'base'.o The profile.nls() function misbehaved when encounteringnon-convergence of the "port" algorithm.o Under certain rare circumstances in R 2.6.x, log(), round()and trunc() could alter their arguments in the caller. Thisinvolved passing of empty '...' arguments, and was spottedwhen using apply(x, 2, log).o par() no longer warns unnecessarily when asked to set new=FALSEon an unused graphics device.o plot.formula() was not passing on '...' when used with aone-sided formula.plot.formula() was not accepting expressions for annotationspassed to title(). (PR#10525)o pchisq(x, df=0, ncp=L) now returns the correct limit exp(-L/2) forx=0 and is no longer returning NaN for x > 0, L < 80. (PR#10551)o Non-ASCII characters were only working correctly in Hersheyfonts if these were specified by the 'vfont' argument totext() and not if specified as a font family.o There were several errors in Hershey$allowed, but the helppage listed the allowed combinations correctly.o text() no longer attempts to use 'vfont' with an expressionfor 'labels' (it was documented not to work).o fisher.test(simulate.p.value = TRUE) gave incorrect answersin some extremely degenerate problems. (PR#10558)o src/extra/pcre has been updated to PCRE 7.5 (bugfix release).o capture.output() completes an incomplete final line ofoutput when file = NULL. (PR#10534)o capture.output() now returns invisibly if output is written toa file/connection.o format.AsIs() did not remove the "AsIs" class and so could gointo an infinite loop.o summary.mlm() lost the names of the coefficients when therewas only one.o Rdconv was not marking examples files with an encoding ifthis was known from the package's DESCRIPTION file.o readChar() from a raw vector was reading a number of bytes,not characters.o slotNames() was erroneously treating classes that extend"character" as strings.o R no longer ignores SIGPIPE signals even in processes launchedby system(). Instead PR#1959 is handled by a simple errorhandler which will give an error message in circumstanceswhere none was given before.o The AIC() S4 generic in package stats4 no longer disablesdispatch of S3 methods for AIC().o The conflicts check in library() excluded all S4 generics, evenwhere they were unrelated to the function masked. It is nowmore selective (although still too generous to S4 generics).o proc.time() was missing a protect and could misbehave ifprovoked by gctorture(). (PR#10600)o The cut() and hist() methods for dates and datetimes are nowmore accurate for intervals of "months" and "years", thanks toMarc Schwarz.o url()/download.file() could segfault if the HTTP interactioninvolved a redirect to an address starting with '/' on thesame server.o Memory allocations used in format() and in an internal utilityfunction could be off by one byte. (PR#10635)o isoreg(x, y) no longer segfaults when y has NAs.o split(x, g) always returns a list as documented. (It used toreturn NULL for a zero-length 'x'.)o tapply(x, g, ...) misbehaved if the args were of zero length.(PR#10644)o hist.POSIXt(*, xaxt = "n") no longer suppresses the y-axis.o strptime() crashed under certain locales on Mac OS X.o gregexpr() no longer segfaults when "" is given as the searchpattern. Thanks to Hervé Pagès for the bug report.o matplot(x, *) with default 'pch' did not plot columns from columnnumber 37 on (because the default pch was NA for those). (PR#10676)o print.htest() lost output when used within sink(file, split=TRUE).o Setting par(col.main=) also set par("col") to the same colour.o Anonymous fifos were broken (again).CHANGES IN R VERSION 2.6.1NEW FEATURESo The "data.frame" and "factor" methods for [[ now supportthe 'exact' argument introduced in 2.6.0.o plot.lm() gains a new argument 'cex.caption' to allow thesize of the captions to be controlled.o A series of changes make the CHARSXP cache introduced in 2.6.0faster (and in some cases many times faster) in sessions witha large number (e.g. a million) of unique character strings,and also if there are many empty strings.o embedFonts(), bitmap() and dev2bitmap() explicitly turn offauto-rotation in Ghostscript when generating PDF.o The canonical architecture is no longer checked when loadingpackages using a non-empty sub-architecture, since it ispossible to (e.g.) build packages for i386-pc-linux-gnu on boththat architecture and on x86_64-unknown-linux-gnu.o Deparsing will (if option warnIncomplete is set) warn onstrings longer than the parser limit (8192 bytes).o url() now uses the UserAgent header in http transactions inthe same way as download.file() (making use of option"HTTPUserAgent").BUG FIXESo iconv() is again able to translate character strings withembedded nuls (such as those in UCS-2).o new.packages() and update.packages() failed when called on anempty library, since old.packages() threw an error.old.packages() now returns NULL (as documented) in that case.o Builds on Mac OS X 10.4 or higher now allocate enough spacein the binary headers to relocate dependent libraries into theframework.o R CMD build now computes the exclusion list on the copy itmakes: this avoids problems if the original sources containsymbolic links (which are resolved in the copy). Thanks toMichael Lawrence for diagnosis and patch.o object.size() had slightly too low a size for objects of type "S4".o symbol() in plotmath expressions was only accepting validcharacter strings, which made it impossible to specify symbolssuch as aleph (obtained by symbol("\300")) in a UTF-8 locale.o An event handling issue caused autorepeat functions tomisbehave with tcltk (notably scrollbars).o plot(sin, -5, 5) gives ylab 'sin(x)' again, where it resultedin 'x(x)' in 2.6.0. Further, plot(sin) again plots from[0,1] also in cases where a previously used coordinate systemdiffers.o curve() with unspecified 'from', 'to' and 'xlim' now reuses theprevious x limits, and not slightly larger ones.o It was intended that R code filenames in packages should startwith an ASCII letter or digits (and R CMD INSTALL uses that),but the test used in R CMD build ([A-Za-z0-9]) waslocale-specific (and excluded t to y in Estonian, forexample). (PR#10351)o 'R CMD build' could misbehave when faced with files with CRLFline endings *and* no line ending on the final line of thefile, removing the last byte of the file.o DF[i, j] failed in 2.6.0 if j was a logical vector selecting asingle column.o Unix x11() would fail if a valid 'display' was specified butDISPLAY was unset. (PR#10379)o postscript() was not always ignoring .Postscript.Options inthe workspace (where it should not have occurred).o help.search() would give an error if it found a badlyinstalled package, even if 'package' was not specified.o tclServiceMode() (package tcltk) now works under Unix-alikes.(Although documented, it used only to work under Windows.)o As Mac OS X 10.5.x comes with incompatible /bin/sh shell, weforce SHELL=/bin/bash (which is ok) in that case. [Only for2.6.x: another solution is used in 2.7.0.]o Deliberately using malformed source attributes no longercauses deparsing/printing of functions to crash R. (PR#10437)o R CMD check and R CMD INSTALL now work with (some) directorynames containing spaces.o choose(n, k) gave incorrect values for negative n and small k.o plot.ts(x,y) could use wrong default labels; fixed thanks toAntonio, Fabio di Narzo.o reshape() got column names out of sync with contents in somecases; found by Antonio Fabio Di Narzo.o ar(x) for short 'x' (i.e. length <= 10) could fail because thedefault 'order.max' was >= length(x) which is non-sensical.o Keyboard events in getGraphicsEvent() could cause stackimbalance errors. (PR#10453)CHANGES IN R VERSION 2.6.0SIGNIFICANT USER-VISIBLE CHANGESo integrate(), nlm(), nlminb(), optim(), optimize() and uniroot()now have '...' much earlier in their argument list. Thisreduces the chances of unintentional partial matching butmeans that the later arguments must be named in full.o The default type for nchar() is now "chars". This is almostalways what was intended, and differs from the previous defaultonly for non-ASCII strings in a MBCS locale. There is a newargument 'allowNA', and the default behaviour is now to throwan error on an invalid multibyte string if type="chars" ortype="width".o Connections will be closed if there is no R object referring tothem. A warning is issued if this is done, either at garbagecollection or if all the connection slots are in use.NEW FEATURESo abs(), sign(), sqrt(), floor(), ceiling(), exp() and the gamma,trig and hyperbolic trig functions now only accept oneargument even when dispatching to a Math group method (whichmay accept more than one argument for other group members).o abbreviate() gains a 'method' argument with a new option"both.sides" which can make shorter abbreviations.o aggregate.data.frame() no longer changes the group variablesinto factors, and leaves alone the levels of those which arefactors. (Inter alia grants the wish of PR#9666.)o The default 'max.names' in all.names() and all.vars() is now-1 which means unlimited. This fixes PR#9873.o as.vector() and the default methods of as.character(),as.complex(), as.double(), as.expression(), as.integer(),as.logical() and as.raw() no longer duplicate in most caseswhere the object is unchanged. (Beware: some code has beenwritten that invalidly assumes that they do duplicate, oftenwhen using .C/.Fortran(DUP=FALSE).)o as.complex(), as.double(), as.integer(), as.logical() andas.raw() are now primitive and internally generic forefficiency. They no longer dispatch on S3 methods foras.vector() (which was never documented). as.real() andas.numeric() remain as alternative names for as.double().expm1(), log(), log1p(), log2(), log10(), gamma(), lgamma(),digamma() and trigamma() are now primitive. (Note that logb()is not.)The Math2 and Summary groups (round, signif, all, any, max, min,sum, prod, range) are now primitive.See under METHODS PACKAGE below for some consequences for S4 methods.o apropos() now sorts by name and not by position on the searchpath.o attr() gains an 'exact = TRUE' argument to disable partialmatching.o bxp() now allows 'xlim' to be specified. (PR#9754)o C(f, SAS) now works in the same way as C(f, treatment), etc.o chol() is now generic.o dev2bitmap() has a new option to go via PDF and so allowsemi-transparent colours to be used.o dev.interactive() regards devices with the displaylist enabledas interactive, and packages can register the names of theirdevices as interactive via deviceIsInteractive().o download.packages() and available.packages() (and functionswhich use them) now support in 'repos' or 'contriburl' eitherfile: plus a general path (including drives on a UNC path onWindows) or a file:/// URL in the same way as url().o dQuote() and sQuote() are more flexible, with renderingcontrolled by the new option 'useFancyQuotes'. This includesthe ability to have TeX-style rendering and directional quotes(the so-called 'smart quotes') on Windows. The default is touse directional quotes in UTF-8 locales (as before) and in theRgui console on Windows (new).o duplicated() and unique() and their methods in base gain anadditional argument 'fromLast'.o fifo() no longer has a default 'description' argument.fifo("") is now implemented, and works in the same way as file("").o file.edit() and file.show() now tilde-expand file paths on allinterfaces (they used to on some and not others).o The find() argument is now named 'numeric' and not 'numeric.':the latter was needed to avoid warnings about name clashesmany years ago, but partial matching was used.o stats:::.getXlevels() confines attention to factors since someusers expected R to treat unclass(<a factor>) as a numericvector.o grep(), strsplit() and friends now warn if incompatible setsof options are used, instead of silently using the documentedpriority.o gsub()/sub() with perl = TRUE now preserves attributes from theargument x on the result.o is.finite() and is.infinite() are now S3 and S4 generic.o jpeg(), png(), bmp() (Windows), dev2bitmap() and bitmap() havea new argument 'units' to specify the units of 'width' and'height'.o levels() is now generic (levels<- has been for a long time).o Loading serialized raw objects with load() is now considerablyfaster.o New primitive nzchar() as a faster alternative tonchar(x) > 0 (and avoids having to convert to wide chars ina MBCS locale and hence consider validity).o The way old.packages() and hence update.packages() handlepackages with different versions in multiple packagerepositories has been changed. The first package encounteredwas selected, now the one with highest version number.o optim(method = "L-BFGS-B") now accepts zero-length parameters,like the other methods. Also, method = "SANN" no longerattempts to optimize in this case.o New options 'showWarnCalls' and 'showErrorCalls' to give aconcise traceback on warnings and errors. showErrorCalls=TRUEis the default for non-interactive sessions. Option'showNCalls' controls how abbreviated the call sequence is.o New options 'warnPartialMatchDollar', 'warnPartialMatchArgs'and 'warnPartialMatchAttr' to help detect the unintended useof partial matching in $, argument matching and attr()respectively.o A device named as a character string in options(device =) is nowlooked for in the grDevices name space if it is not visiblefrom the global environment.o pmatch(x, y, duplicates.ok = TRUE) now uses hashing and so ismuch faster for large x and y when most matches are exact.o qr() is now generic.o It is now a warning to have an non-integer object for.Random.seed: this indicates a user had been playing with it,and it has always been documented that users should only saveand restore it.o New higher-order functions Reduce(), Filter() and Map().o [g]regexpr() gain an 'ignore.case' argument for consistency withgrep(). (This does change the positional matchingof arguments, but no instances of positional matching beyondthe second were found.)o relist() utility, an S3 generic with several methods, providingan 'inverse' for unlist(); thanks to a code proposal fromAndrew Clausen.o require() now returns invisibly.o The interface to reshape() has been revised, allowing somesimplified forms that did not work before, and somewhatimproved error handling. A new argument 'sep' has beenintroduced to replace simple usages of 'split' (the oldfeatures are retained).o rmultinom() uses a high-precision accumulator where available,and so is more likely to give the same result on differentplatforms (although it is still possible to get differentresults, and the result may differ from previous versions of R).o row() and col() now work on matrix-like objects such as dataframes, not just matrices.o Rprof() allows smaller values of 'interval' on machines thatsupport it: for example modern Linux systems supportinterval = 0.001.o sample() now requires its first argument 'x' to be numeric(in the sense of is.numeric()) as well as of length 1 and >= 1before it is regarded as shorthand for 1:x.o sessionInfo() now provides details about package name spacesthat are loaded but not attached. The output of sessionInfohas been improved to make it easier to read when it isinadvertently wrapped after being pasted into an emailmessage.o setRepositories() has a new argument 'ind' to allow selectionsto be made programmatically.o sprintf() no longer has a output string length limit.o storage.mode<- is now primitive, and hence makes fewer copiesof an object (none if the mode is unchanged). It is a littleless general than mode<-, which remains available. (See alsothe entry under DEFUNCT below.)o sweep() gains an argument 'check.margin = TRUE' which warnsabout mismatched dimensions.o The mathematical annotation facility (plotmath) now recognisesa symbol() function which forces the font to be a symbol font.This allows access to all characters in the Adobe Symbolencoding within plotmath expressions.o For OSes that cannot unset environment variables, Sys.unsetenv()sets the value to "", with a warning.o New function Sys.which(), an interface to 'which' onUnix-alikes and an emulation on Windows.o On Unix-alikes, system(, intern = TRUE) reports on very longlines that may be truncated, giving the line number of thecontent being read.o termplot() has a default for 'ask' that uses dev.interactive().It allows 'ylim' to be set, or computed to cover all theplots to be made (the new default) or computed for each plot(the previous default).o uniroot(f, *) is slightly faster for non-trivial f() because itcomputes f(lower) and f(upper) only once, and it has new optionalarguments 'f.lower' and 'f.upper' by which the caller can pass these.o unlink() is now internal, using common POSIX code on all platforms.o unsplit() now works with lists of dataframes.o The vcov() methods for classes "gls" and "nlme" have migrated topackage 'nlme'.o vignette() has a new argument 'all' to choose between showingvignettes in attached packages or in all installed packages.o New function within(), which is like with(), except that itreturns modified versions back of lists and data frames.o X11(), postscript() (and hence bitmap()), xfig(), jpeg(), png()and the Windows devices win.print(), win.metafile() and bmp()now warn (once at first use) if semi-transparent colours areused (rather than silently treating them as fullytransparent).o New function xspline() to provide base graphics support ofX-splines (cf grid.xspline).o New function xyTable() does the 2D gridding "computations" used bysunflowerplot().o Rd conversion to HTML and CHM now makes use of classes, whichare set in the stylesheets. Editing R.css will change thestyles used for \env, \option, \pkg etc. (CHM styles are setat compilation time.)o The documented arguments of '%*%' have been changed to be xand y, to match S and the implicit S4 generic.o If members of the Ops group (the arithmetic, logical andcomparison operators) and '%*%' are called as functions,e.g. '>'(x, y), positional matching is always used. (It usedto be the case that positional matching was used for thedefault methods, but names would be matched for S3 and S4methods and in the case of '!' the argument name differedbetween S3 and S4 methods.)o Imports environments of name spaces are named (as"imports:foo"), and so are known e.g. to environmentName().o Package 'stats4' uses lazy-loading not SaveImage (which is nowdeprecated).o Installing help for a package now parses the .Rd file onlyonce, rather than once for each type.o PCRE has been updated to version 7.2.o bzip2 has been updated to version 1.0.4.o gettext has been updated to version 0.16.1.o There is now a global CHARSXP cache, R_StringHash. CHARSXPsare no longer duplicated and must not be modified in place.Developers should strive to only use mkChar (and mkString) forcreating new CHARSXPs and avoid use of allocString. A newmacro, CallocCharBuf, can be used to obtain a temporary charbuffer for manipulating character data. This patch waswritten by Seth Falcon.o The internal equivalents of as.complex, as.double, as.integerand as.logical used to handle length=1 arguments now acceptcharacter strings (rather than report that this is'unimplemented').o Lazy-loading a package is now substantially more efficient (inmemory saved and load time).o Various performance improvements lead to a 45% reductionin the startup time without 'methods' (and one-sixth with -'methods' now takes 75% of the startup time of a default session).o The [[ subsetting operator now has an argument 'exact' thatallows programmers to disable partial matching (which will indue course become the default). The default value is exact=NAwhich causes a warning to be issued when partial matchingoccurs. When exact = TRUE, no partial matching will beperformed. When exact = FALSE, partial matching can occur andno warning will be issued. This patch was written by SethFalcon.o Many of the C-level warning / error messages (e.g. fromsubscripting) have been re-worked to give more detailedinformation on either the location or the cause of theproblem.o The S3 and S4 Math groups have been harmonized. Functionslog1p(), expm1(), log10() and log2() are members of the S3group, and sign(), log1p(), expm1(), log2(), cummax(),cummin(), digamma(), trigamma() and trunk() are members of theS4 group. gammaCody() is no longer in the S3 Math group.They are now all primitive.o The initialization of the random-number stream makes use of thesub-second part of the current time where available.Initialization of the 1997 Knuth TAOCP generator is now donein R code, avoiding some C code whose licence status has beenquestioned.o The reporting of syntax errors has been made more user-friendly.METHODS PACKAGEo Packages using 'methods' have to have been installed in R 2.4.0or later (when various internal representations were changed).o Internally generic primitives no longer dispatch S4 methods onS3 objects.o load() and restoring a workspace attempt to detect and warn onthe loading of pre-2.4.0 S4 objects.o Making functions primitive changes the semantics of S4dispatch: these no longer dispatch on classes based on typesbut do dispatch whenever the function in the base name space iscalled.This applies to as.complex(), as.integer(), as.logical(),as.numeric(), as.raw(), expm1(), log(), log1p(), log2(),log10(), gamma(), lgamma(), digamma() and trigamma(), aswell as the Math2 and Summary groups.Because all members of the group generics are now primitive,they are all S4 generic and setting an S4 group generic doesat last apply to all members and not just those already madeS4 generic.as.double() and as.real() are identical to as.numeric(), andnow remain so even if S4 methods are set on any of them.Since 'as.numeric' is the traditional name used in S4,currently methods must be exported from a NAMESPACE for'as.numeric' only.o The S4 generic for '!' has been changed to have signature (x)(was (e1)) to match the documentation and the S3 generic.setMethod() will fix up methods defined for (e1), with awarning.o The "structure" S4 class now has methods that implement theconcept of structures as described in the Blue Book--thatelement-by-element functions and operators leave structureintact unless they change the length. The informal behaviorof R for vectors with attributes was inconsistent.o The implicitGeneric() function and relatives have been added tospecify how a function in a package should look when methods aredefined for it. This will be used to ensure that generic versionsof functions in R core are consistent. See ?implicitGeneric.o Error messages generated by some of the functions in the methodspackage provide the name of the generic to provide morecontextual information.o It is now possible to use setGeneric(useAsDefault = FALSE) todefine a new generic with the name of a primitive function(but having no connection with the primitive).o showMethods() has a "smart" default for 'inherited' such thatshowMethods(<genfun>, incl = TRUE) becomes a useful short cut.DEPRECATED & DEFUNCTo $ on an atomic vector now gives a warning that it is 'invalid'.It remains deprecated, but may be removed in R >= 2.7.0.o storage.mode(x) <- "real" and storage.mode(x) <- "single" aredefunct: use instead storage.mode(x) <- "double" andmode(x) <- "single".o In package installation, SaveImage: yes is deprecated infavour of LazyLoad: yes.o seemsS4Object (methods package) is deprecated in favour of isS4().o It is planned that [[exact=TRUE]] will become the default inR 2.7.0.UTILITIESo checkS3methods() (invoked by R CMD check) now checks thearguments of methods for primitive members of the S3 groupgenerics.o R CMD check now does a recursive copy on the 'tests' directory.o R CMD check now warns on non-ASCII .Rd files without an\encoding field, rather than just on ones that are definitelynot from an ISO-8859 encoding. This agrees with thelong-standing stipulation in 'Writing R Extensions', andcatches some packages with UTF-8 man pages.o R CMD check now warns on DESCRIPTION files with a non-portableEncoding field, or with non-ASCII data and no Encoding field.o R CMD check now loads all the 'Suggests' and 'Enhances'dependencies to reduce warnings about non-visible objects, andalso emulates standard functions (such as shell()) onalternative R platforms.o R CMD check now (by default) attempts to latex the vignettesrather than just weave and tangle them: this will give a NOTEif there are latex errors.o R CMD check computations no longer ignore Rd \usage entries forfunctions for extracting or replacing parts of an object, so S3methods should use the appropriate \method{} markup.o R CMD check now checks for CR (as well as CRLF) line endings inC/C++/Fortran source files, and for non-LF line endings inMakefile[.in] and Makevars[.in] in the package 'src'directory. R CMD build will correct non-LF line endings insource files and in the make files mentioned.o Rdconv now warns about unmatched braces rather than silentlyomitting sections containing them. (Suggestion by BillDunlap, PR#9649)Rdconv now renders (rather than ignores) \var{} inside \code{}markup in latex conversion.R CMD Rdconv gains a --encoding argument to set the defaultencoding for conversions.o The list of CRAN mirrors now has a new (manually maintained)column "OK" which flags mirrors that seem to be OK, only thoseare used by chooseCRANmirror(). The now exported functiongetCRANmirrors() can be used to get all known mirrors or onlythe ones that are OK.o R CMD SHLIB gains arguments --clean and --preclean to clean upintermediate files after and before building.o R CMD config now knows about FC and FCFLAGS (used for F9xcompilation).o R CMD Rdconv now does a better job of rendering quotes intitles in HTML, and \sQuote and \dQuote into text on Windows.C-LEVEL FACILITIESo New utility function alloc3DArray similar to allocMatrix.o The entry point R_seemsS4Object in Rinternals.h has not beenneeded since R 2.4.0 and has been removed. Use IS_S4_OBJECTinstead.o Applications embedding R can use R_getEmbeddingDllInfo() toobtain DllInfo for registering symbols present in theapplication itself.o The instructions for making and using standalone libRmath havebeen moved to the R Installation and Administration manual.o CHAR() now returns (const char *) since CHARSXPs should nolonger be modified in place. This change allows compilers towarn or error about improper modification. Thanks to HervéPagès for the suggestion.o acopy_string is a (provisional) new helper function thatcopies character data and returns a pointer to memoryallocated using R_alloc. This can be used to create a copy ofa string stored in a CHARSXP before passing the data on to afunction that modifies its arguments.o asLogical, asInteger, asReal and asComplex now accept STRSXPand CHARSXP arguments, and asChar accepts CHARSXP.o New entry point R_GE_str2col listed in R_ext/GraphicsEngine.hfor external graphics device developers.o doKeybd and doMouseevent are now exported in GraphicsDevice.h.o R_alloc now has first argument of type 'size_t' to support64-bit platforms (e.g. Win64) with a 32-bit 'long' type.o The type of the last two arguments of getMatrixDimnames (non-APIbut mentioned in R-exts.texi and in Rinternals.h) has beenchanged to 'const char **' (from char **).o R_FINITE now always resolves to the function call R_finite inpackages (rather than sometimes substituting isfinite). Thisavoids some issues where R headers are called from C++ codeusing features tested on the C compiler.o The advice to include R headers from C++ inside extern "C" {}has been changed. It is nowadays better *not* to wrap theheaders, as they include other headers which on some OSesshould not be wrapped.o Rinternals.h no longer includes a substantial set of C headers.All but ctype.h and errno.h are included by R.h which is supposedto be used before Rinternals.h.o Including C system headers can be avoided by defining NO_C_HEADERSbefore including R headers. This is intended to be used fromC++ code, and you will need to include C++ equivalents such as<cmath> before the R headers.INSTALLATIONo The 'test-Lapack' test is now part of 'make check'.o The 'stat' system call is now required, along with 'opendir'(which had long been used but not tested for). ('make check'would have failed in earlier versions without these calls.)o 'evince' is now considered as a possible PDF viewer.o 'make install-strip' now also strips the DLLs in the standardpackages.o Perl 5.8.0 (released in July 2002) or later is now required.(R 2.4.0 and later have in fact required 5.6.1 or later.)o The C function 'finite' is no longer used: we expect a C99compiler which will have 'isfinite'. (If that is missing, wetest separately for NaN, Inf and -Inf.)o A script/executable 'texi2dvi' is now required on Unix-alikes:it is part of the texinfo distribution.o Files texinfo.tex and txi-en.tex are no longer supplied indoc/manual (as the latest versions have an incompatiblelicence). You will need to ensure that your texinfo and/orTeX installations supply them.o wcstod is now required for MBCS support.o There are some experimental provisions for building on Cygwin.PACKAGE INSTALLATIONo The encoding declared in the DESCRIPTION file is now used asthe default encoding for .Rd files.o A standard for specifying package license information in theDESCRIPTION License field was introduced, see 'Writing RExtensions'. In addition, files LICENSE or LICENCE in a packagetop-level source directory are now installed (so putting copiesinto the 'inst' subdirectory is no longer necessary).o install.packages() on a Unix-alike now updatesdoc/html/packages.html only if packages are installed to.Library (by that exact name).o R CMD INSTALL --clean now runs SHLIB --clean to do the cleanup (unless there is a src/Makefile), and this will remove$(OBJECTS) (which might have been redefined in Makevars).R CMD INSTALL --preclean cleans up the sources after aprevious installation (as if that had used --clean) beforeattempting to install.R CMD INSTALL will now run R CMD SHLIB in the 'src' directoryif src/Makevars is present, even if there are no source fileswith known extensions.o If there is a file src/Makefile, src/Makevars is now ignored(it could be included by src/Makefile if desired), and it ispreceded by etc/Makeconf rather than share/make/shlib.mk.Thus the makefiles read are R_HOME/etc/Makeconf, src/Makefilein the package and then any personal Makevars files.o R CMD SHLIB used to support the use of 'OBJS' in Makevars, butthis was changed to 'OBJECTS' in 2001. The undocumentedalternative of 'OBJS' has finally been removed.o R CMD check no longer issues a warning about no data setsbeing present if a lazyload db is found (as determined by thepresence of Rdata.rdb, Rdata.rds, and Rdata.rdx in the 'data'subdirectory.BUG FIXESo charmatch() and pmatch() used to accept non-integer values for'nomatch' even though the return value was documented to beinteger. Now 'nomatch' is coerced to integer (rather than theresult being coerced to the type of 'nomatch').o match.call() no longer 'works' outside a function unless'definition' is supplied. (Under some circumstances it usedto 'work', matching itself.)o The formula methods of boxplot, cdplot, pairs and spineplotnow attach 'stats' so that model.frame() is visible wherethey evaluate it.o Date-time objects are no longer regarded as numeric byis.numeric().o methods("Math") did not work if 'methods' was not attached.o readChar() read an extra empty item (or more than one) beyondthe end of the source; in some conditions it would terminateearly when reading an item of length 0.o Added a promise evaluation stack so interrupted promiseevaluations can be restarted.o R.version[1:10] now nicely prints.o In the methods package, prototypes are now inherited for the.Data "slot"; i.e., for classes that contain one of the basicdata types.o <data frame>[[i, j]] now works if 'i' is character.o write.dcf() no longer writes NA fields (PR#9796), and workscorrectly on empty descriptions.o pbeta(x, log.p = TRUE) now has improved accuracy in many cases,and so have functions depending on it such as pt(), pf() andpbinom().o mle() had problems with the L-BFGS-B in the no-parameter caseand consequentially also when profiling 1-parameter models(fix thanks to Ben Bolker).o Two bugs fixed in methods that in involve the "..." argument inthe generic function: previously failed to catch methods thatjust dropped the "..."; and use of callGeneric() with no argumentsfailed in some circumstances when "..." was a formal argument.o sequence() now behaves more reasonably, although notback-compatibly for zero or negative input.o nls() now allows more peculiar but reasonable ways of being called,e.g., with data=list(<uneven lengths>) or a model without variables.o match.arg() was not behaving as documented whenseveral.ok=TRUE (PR#9859), gave spurious warnings when 'arg'had the wrong length and was incorrectly documented (exactmatches are returned even when there is more than one partialmatch).o The data.frame method for split<-() was broken.o The test for -D__NO_MATH_INLINES was badly broken and returnedtrue on all non-glibc platforms and false on all glibc ones(whether they were broken or not).o LF was missing after the last prompt when --quiet was used without--slave. Use --slave when no final LF is desired.o Fixed bug in initialisation code in 'grid' package fordetermining the boundaries of shapes. Problem reportedby Hadley Wickham; symptom was error message:"Polygon edge not found".o str() is no longer slow for large POSIXct objects. Its outputis also slightly more compact for such objects; implementationvia new optional argument 'give.head'.o strsplit(*, fixed=TRUE), potentially iconv() and internal stringformatting is now faster for large strings, thanks to reportPR#9902 by John Brzustowski.o de.restore() gave a spurious warning for matrices (Ben Bolker)o plot(fn, xlim=c(a,b)) would not set "from" and "to" properlywhen plotting a function. The argument lists to curve() andplot.function() have been modified slightly as part of thefix.o julian() was documented to work with POSIXt origins, but didnot work with POSIXlt ones. (PR#9908)o Dataset HairEyeColor has been corrected to agree withFriendly (2000): the change involves the breakdown of theBrown hair / Brown eye cell by Sex, and only totals over Sexare given in the original source.o Trailing spaces are now consistently stripped from \alias{}entries in .Rd files, and this is now documented. (PR#9915)o .find.packages(), packageDescription() and sessionInfo()assumed that attached environments named "package:foo" werepackage environments, although misguided users could use sucha name in attach().o spline() and splinefun() with method = "periodic" could returnincorrect results when length(x) was 2 or 3.o getS3method() could fail if the method name contained a regexpmetacharacter such as "+".o help(<a character vector>) now uses the name and not thevalue of the vector unless it has length exactly one, soe.g. help(letters) now gives help on 'letters'.(Related to PR#9927)o Ranges in chartr() now work better in CJK locales, thanks toEi-ji Nakama.*************************************************** ** 2.5 SERIES NEWS ** ***************************************************CHANGES IN R VERSION 2.5.1 patchedINSTALLATIONo doc/manual now includes the texinfo support file epsf.tex whichbasic TeX installations often omit.BUG FIXESo Attempting to do in-memory serialization of an object requiringmore than 1Gb might have failed.o Using formals<- on a function whose body was NULL workedincorrectly. (PR#9758)o logb() is now strictly a wrapper for log(), so if S4 methodsare set on log(), logb() will also dispatch on them.o conflicts(where=) did not work correctly. (PR#9760)o log(x, base) was intended to handle complex 'base' even forreal 'x', but there was a typo in the code to do so.o Syntax errors would sometimes misreport the error context.o qt(p, df=1) is now also correct for very small p. (PR#9804)qt(p, df=2) ditto; also is more accurate for 0 < |p - 0.5| << 1.qt(*, log.p=TRUE) now is finite and monotone (again!) where possible.o Several functions including those making use of printCoefmat(),layout() and sortedXyData() now work correctly withnon-default settings of options("OutDec").o S4 method dispatch for group generics (and %*%) failed to passarguments to methods as promises and so in some circumstancesmethods could change their arguments. (Seen for the 'Math'group with package Matrix.)o The print() method for "ts" now handles quarterly and monthlyseries which do not start at the beginning of a quarter ormonth respectively.o Deserializing raw objects saved using save(..., ascii=TRUE)now works correctly.o ISOLatin7 encoding for postscript/PDF has been corrected.(PR#9845)o rbind(x,y) and cbind(x,y) did not dispatch properly when x andy had multiple S3-style classes.o The workaround for seeking on > 2Gb files did not work correctlyon Unix-alike 32-bit systems. (PR#9883)o We had identical(NaN, NA_real_) != identical(NA_real_, NaN),spotted by Petr Savicky.CHANGES IN R VERSION 2.5.1NEW FEATURESo density(1:20, bw = "SJ") now works as bw.SJ() now tries a largersearch interval than the default (lower, upper) if it does notfind a solution within the latter.o The output of library() (no arguments) is now sorted by librarytrees in the order of .libPaths() and not alphabetically.o R_LIBS_USER and R_LIBS_SITE feature possible expansion ofspecifiers for R version specific information as part of thestartup process.o C-level warning calls now print a more informative context,as C-level errors have for a while.o There is a new option "rl_word_breaks" to control the way theinput line is tokenized in the readline-based terminalinterface for object- and file-name completion.This allows it to be tuned for people who use their space barvs those who do not. The default now allows filename-completionwith +-* in the filenames.o If the srcfile argument to parse() is not NULL, it will be addedto the result as a "srcfile" attribute.o It is no longer possible to interrupt lazy-loading (which wasonly at all likely when lazy-loading environments), whichwould leave the object being loaded in an unusable state.This is a temporary measure: error-recovery when evaluatingpromises will be tackled more comprehensively in 2.6.0.INSTALLATIONo 'make check' will work with --without-iconv, to accommodatebuilding on AIX where the system iconv conflicts withlibiconv and is not compatible with R's requirements.o There is support for 'DESTDIR': see the R-admin manual.o The texinfo manuals are now converted to HTML with a stylesheet: in recent versions of makeinfo the markup such as @filewas being lost in the HTML rendering.o The use of inlining has been tweaked to avoid warnings fromgcc >= 4.2.0 when compiling in C99 mode (which is the defaultfrom configure).BUG FIXESo as.dendrogram() failed on objects of class "dendrogram".o plot(type ="s") (or "S") with many (hundreds of thousands)of points could overflow the stack. (PR#9629)o Coercing an S4 classed object to "matrix" (or other basic class)failed to unset the S4 bit.o The 'useS4' argument of print.default() had been broken by anunrelated change prior to 2.4.1. This allowed print() andshow() to bounce badly constructed S4 objects betweenthemselves indefinitely.o Prediction of the seasonal component in HoltWinters() was onestep out at one point in the calculations.decompose() incorrectly computed the 'random' component for amultiplicative fit.o Wildcards work again in unlink() on Unix-alikes (they did notin 2.5.0).o When qr() used pivoting, the coefficient names in qr.coef() werenot pivoted to match. (PR#9623)o UseMethod() could crash R if the first argument was not acharacter string.o R and Rscript on Unix-alikes were not accepting spaces in -earguments (even if quoted).o Hexadecimal integer constants (e.g. 0x10L) were not being parsedcorrectly on platforms where the C function atof did notaccept hexadecimal prefixes (as required by C99, but notimplemented in MinGW as used by R on Windows). (PR#9648)o libRlapack.dylib on Mac OS X had no version information andsometimes an invalid identification name.o Rd conversion of \usage treated '\\' as a single backslash inall but latex: it now acts consistently with the otherverbatim-like environments (it was never 'verbatim' despitethe documentation).\code{\.} is now rendered as '\.' in all formats, asdocumented (it was not the case for latex conversion).codoc() (and checkDocStyle() and checkDocUsage()) now applythe same transformations to \usage as Rd conversion does,so {, % and \\ in strings in usages will now be relatedcorrectly to the help files.o rbind() failed if the only data frame had 0 rows. (PR#9657)o <a data.frame>[i, j] could sometimes select the wrong columnwhen j is numeric if there are duplicate column names.o sample(x, size, replace=TRUE, prob) had a memory leak if10000 < size <= 100000.o x <- cbind(1:2); rownames(x) <- factor(c("A",NA)) now longersegfaults.o R CMD BATCH no longer assumes Sys.unsetenv() is supported (itis not on older Solaris systems).o median() returned a logical result when it was 'NA': it nowreturns an NA of appropriate type (e.g. integer or double).o grep(fixed = TRUE, perl = TRUE) ignored 'fixed', although itwas documented to ignore 'perl'Same for [g]regexpr and [g]sub.o getNamespaceExports("base") works again.o runmed(c(), 1) no longer segfaults.o qr.coef(QR, b) failed for an LAPACK-produced QR if b wasinteger or for an over-determined system.qr.solve() for an under-determined system produces asolution with 0 and not NA for columns which are unused.o segments() was not handling full transparency correctly in PDF.(PR#9694)Nor was arrows().o callGeneric() inside a method with extra arguments {and hencecurrently defined via .local()} now works.o [g]sub(fixed=TRUE, useBytes=FALSE) could substitute in thewrong place in an MBCS locale.gregexpr() could give incorrect answers in MBCS locales forperl = TRUE or fixed = TRUE (unless useBytes = TRUE).o The legacy quartz() device no longer crashes in locator()if the user attempts to close the window.o "CGGStackRestore: gstack underflow" warning is no longer shownin legacy quartz() device.o formatC() now limits 'digits' to 50 to avoid problems inC-level sprintf in some OSes.o seq.int(x, y, by=z) gave 'x' (and not an error) if0 > (y-x)/z > -1.o promptClass() now lists methods, including those for generics inother attached packages.o Connection-related functions such as readBin() no longer crashwhen supplied with a non-connection object.o as.character.srcref() didn't handle bad srcref objects cleanly.o predict.nls() no longer requires 'newdata' to contain exactlythe variable names needed to fit the model: variables used onthe LHS only are no longer required and further variables areallowed.o plot.hclust() had a 'out by one' error, and ignored the lastobject when computing the window region (and could overrunarrays).o deriv() was creating results with double (and not integer) dims.o The unserialize code (e.g. as called by load()) looked for afunction findPackageEnv() to set a saved package environment.This was missing, but is now supplied.o [cr]bind could segfault when creating a list matrix result.(Reported by Martin Morgan.)o besselI(x, nu, exp=TRUE) and besselY(x, nu) could give wronganswers for nu < 0. (Reported by Hiroyuki Kawakatsu.)o [g]sub could confuse a trailing byte '\' for a backreferencein MBCSs where '\' can occur as a trailing byte (not UTF-8 norEUC-JP, but SJIS and the CJK character sets used on Windows).(PR#9751)CHANGES IN R VERSION 2.5.0USER-VISIBLE CHANGESo apropos(x) and find(x) now both only work for character 'x',and hence drop all non-standard evaluation behaviour.o Data frames can have 'automatic' row names which are notconverted to dimnames by as.matrix(). (Consequently, e.g.,t(.) for such data frames has NULL column names.) Thischange leads to memory reductions in several places, but canbreak code which assumes character dimnames for data framesderived from matrices.No existing R object is regarded as having 'automatic' rownames, and it may be beneficial to recreate such objects viaread.table() or data.frame().o Using $ on an atomic vector now raises a warning, as does useon an S4 class for which a method has not been defined.o The Unix-alike readline terminal interface now doescommand-completion for R objects, incorporating thefunctionality formerly in package 'rcompletion' by DeepayanSarkar. This can be disabled by setting the environmentvariable R_COMPLETION=FALSE when starting R (e.g. in~/.Renviron). (Note that when this is enabled, filenamecompletion no longer works for file paths containing Roperators such as '+' and '-'.)NEW FEATURESo abbreviate() no longer has an 8191 byte limit on the size ofstrings it can handle.o abs(x) now returns integer for integer or logical arguments.o apropos() has a new argument 'ignore.case' which defaults toTRUE, potentially matching more than previously, thanks to asuggestion by Seth Falcon.o args(), str() and print() now give the argument lists of primitivefunctions.o as.matrix() gains the '...' argument that several packages haveassumed it always had (and S-PLUS has).o Manipulation of integers as roman numerals via as.roman() inpackage utils.o attr() no longer treats name = NA_character_ as meaningname = "NA".o binom.test() now allows a 'fuzz' for calculated integer valuesin its x and n arguments.o boxplot(*, notch = TRUE) now warns when notches are outsidehinges; related to PR#7690.o New function callCC() providing a downward-only version ofScheme's call with current continuation.o capabilities() now has a "profmem" entry indicating whetherR has been compiled with memory profiling.o colnames<-() and rownames<-() now handle data frames explicitly,so calling colnames<- on a data frame no longer alters therepresentation of the row names.o commandArgs() has a new 'trailingOnly' argument to be used inconjunction with --args.o contour() now passes graphical parameters in '...' to axis()and box().o New data set 'crimtab' on Student(1908)'s 3000 criminals.o cut.default() has a new argument 'ordered_result'.o .deparseOpts() has two new options: "keepNA" to ensure thatdifferent types (logical, integer, double, character andcomplex) of NAs are distinguished, and "S_compatible" tosuppress the use of R-specific features such as 123L and todeparse integer values of a double vector with a trailingdecimal point.The 'keepInteger' option now uses the suffix 'L' rather thanas.integer() where possible (unless all entries are NA or"S_compatible" is also set).Other deparse options can now be added to "all" (which has notfor some time actually switched on all options).Integer sequences m:n are now deparsed in that form.o deparse() and dput() now include "keepInteger" and "keepNA" intheir defaults for the 'control' argument.o detach() now takes another argument, unload, which indicateswhether or not to unload the package and then only cleansup the S4 methods if the package successfully unloads.o There are new constants NA_integer_, NA_real_, NA_complex_ andNA_character_ to denote NAs of those types, and they will beused in deparsing in place of as.integer(NA) etc unless.deparseOpts() includes "S_compatible".o dev.print() now recognizes 'screen devices' as all those withan enabled display list, rather than a hard-coded set.o Objects of class "difftime" are now handled more flexibly. Theunits of such objects can now be accessed via a units()function, which also has a replacement form, and there areconversion methods to and from numeric, which also allow thespecification of units. Objects of this class can also bestored in data frames now. A format() method has been added,and the print method was revised.o New function environmentName() to give the print name ofenvironments such as "namespace:base".This is now used by str().o New function env.profile() provides R level access to summarystatistics on environments. In a related patch, new.env()now allows the user to specify an initial size for a hashedenvironment.o file() can read the X11 clipboard selection as "X11_clipboard"on suitable X11-using systems.o file("stdin") is now recognized, and refers to the process's'stdin' file stream whereas stdin() refers to the console.These may differ, for example for a GUI console, an embeddedapplication of R or if --file= has been used.o file_test() is now also available in package utils.(It is now private in package tools.)o file.show() gains an 'encoding' argument.o New functions formatUL() and formatOL() in package utils forformatting unordered (itemize) and ordered (enumerate) lists.o The statistics reported when gcinfo(TRUE) are now of the amountsused (in Mb) and not of the amounts free (which are not reallyrelevant when there are no hard limits, only gc trigger points).o New function get_all_vars() to retrieve all the(untransformed) variables that the default method ofmodel.frame() would use to create the model frame.o interaction() has a new argument 'lex.order'.o initialize() (in methods) now tries to be smarter aboutupdating the new instance in place, thereby reducingcopying.o install.packages(dependencies = NA) is a new default, which isto install essential dependencies when installing fromrepositories to a single library. As a result of this change,update.packages() will install any new dependencies of thepackages it is updating (alongside the package in the samelibrary tree).If 'lib' is not specified or is specified of length one andthe chosen location is not a writable directory,install.packages() offers to create a personal librarydirectory for you if one does not already exist, and toinstall there.o is.atomic, is.call, is.character, is.complex, is.double (== is.real),is.environment, is.expression, is.function, is.integer,is.list, is.logical, is.null, is.object, is.pairlist,is.recursive, is.single and is.symbol (== is.name) are nolonger internally S3 generic, nor can S4 methods be writtenfor them.The "factor" methods of is.integer and is.numeric have beenreplaced by internal code.o Added is.raw() for completeness.o l10n_info() also reports if the current locale is Latin-1.o levels<-(), names() and names<-() now dispatch internally forefficiency and so no longer have S3 default methods.o .libPaths() now does both tilde and glob expansion.o Functions lm(), glm() loess(), xtabs() and the default methodof model.frame() coerce their 'formula' argument (if supplied)to a formula.o max(), min() and range() now work with character vectors.o message() has a new argument 'appendLF' to handle messageswith and without newlines. There is a new message classpackageStartupMessage() that can be suppressed separately.o A new function, method.skeleton() writes a skeleton version ofa call to setMethod() to a file, with correct arguments andformat, given the name of the function and the method signature.o mode<- and storage.mode<- do slightly less copying.o nls.control(* , printEval = FALSE, warnOnly = FALSE) are two newoptions to help better analyze (non-)convergence of nls(),thanks to Kate Mullen.nls() and summary(nls()) now contain more information and alsoprint information about convergence.o options(device = ) now accepts a function object as well asthe name of a function.o pdf() supports new values for 'paper' of "US" (same as"letter"), "a4r" and "USr" (the latter two meaning rotated tolandscape). postscript() also accepts paper = "US".o persp() now respects the graphical pars 'cex.axis', 'cex.lab','font.axis' and 'font.lab'.o New faster internal functions pmax.int() and pmin.int() forinputs which are atomic vectors without classes (called bypmax/pmin where applicable).pmin/pmax are now more likely to work with classed objects:they work with POSIXlt datetimes, for example.o postscript() now by default writes grey colors (including blackand white) via 'setgray', which gives more widely acceptableoutput. There are options to write pure RGB, CMYK or gray viathe new argument 'colormodel'.o rbind.data.frame() now ignores all zero-row inputs, as well aszero-column inputs (which it used to do, undocumented). Thisis because read.table() can create zero-row data frames withNULL columns, and those cannot be extended.o readChar() and writeChar() can now work with a raw vector.o read.table(), write.table() and allies have been moved to packageutils.o rgb() now accepts the red, green and blue components in asingle matrix or data frame.o New utility function RShowDoc() in package 'utils' to find anddisplay manuals and other documentation files.o New .row_names_info() utility function finds the number of rowsefficiently for data frames; consequently, dim.data.frame()has become very fast for large data frames with 'automatic'row names.o RSiteSearch() now also allows to search postings of the 'R-devel'mailing list.o screeplot() is now (S3) generic with a default method, thanksto a patch from Gavin Simpson.o Experimental 'verbose' argument for selectMethod(). Might bereplaced later by a better interface for method selectioninspection.o Added links to source files to the parsing routines, so thatsource() can now echo the original source and comments (ratherthan deparsing). This affects example() and Sweave() as well.o stack() and unstack() have been moved to package utils.o strptime() now sets the "tzone" attribute on the result iftz != "".o str.default() typically prints fewer entries of logical vectors.o The RweaveLatex driver for Sweave() now supports two newoptions: expand=FALSE, to show chunk references in the output,and concordance=TRUE, to output the concordance between inputand output lines.o system() now takes the same set of arguments on all platforms,with those which are not applicable being ignored with awarning. Unix-alikes gain 'input' and 'wait', and Windowsgains 'ignore.stderr'.o system.time() and proc.time() now return an object of class"proc_time" with a print() method that returns a POSIX-likeformat with names.o Sys.getenv() has a new argument 'unset' to allow unset and setto "" to be distinguished (if the OS does). The results ofSys.getenv() are now sorted (by name).o New function Sys.glob(), a wrapper for the POSIX.2 functionglob(3) to do wildcard expansion (on systems which have it,plus an emulation on Windows).o Sys.setenv() is a new (and preferred) synonym for Sys.putenv().The internal C code uses the POSIX-preferred 'setenv' ratherthan 'putenv' where the former is available.o New function Sys.unsetenv() to remove environment variables(on systems where unsetenv is implemented or putenv can removevariables, such as on Windows).o text(), mtext(), strheight(), strwidth(), legend(), axis(),title(), pie(), grid.text() and textGrob() all attempt tocoerce non-language annotation objects (in the sense of is.object)to character vectors. This is principally intended to coverfactors and POSIXt and Date objects, and is done via thenew utility function as.graphicsAnnot() in package grDevices.o tcltk:tk_select.list() now chooses the width to fit the widest item.o {re,un}tracemem() are now primitives for efficiency and somigrate from 'utils' to 'base'.o union(), interect(), setdiff() and setequal() now coerce theirarguments to be vectors (and they were documented only toapply to vectors).o uniroot() now works if the zero occurs at one of the ends ofthe interval (suggestion of Tamas Papp).o There is a new function View() for viewing matrix-likeobjects in a spreadsheet, which can be left up whilst R isrunning.o New function withVisible() allows R level access to thevisibility flag.o zip.file.extract() has been moved to package utils.o A few more cases of subassignment work, e.g. <raw>[] <- <list>and <vector>[] <- <expression>, with suitable coercion of the LHS.o There is a warning if \ is used unnecessarily in a string whenbeing parsed, e.g. "\." where probably "\\." was intended.("\." is valid, but the same as ".".) Thanks to Bill Dunlapfor the suggestion.o Introduced the suffix L for integer literals to createinteger rather than numeric values, e.g. 100L, 0x10L, 1e2L.o Set the parser to give verbose error messages in case ofsyntax errors.o The class "LinearMethodsList" has been extended and will beused to create list versions of methods, derived from themethods tables (environments). The older recursive"MethodsList" class will be deprecated (by the release of2.5.0 if possible).o There are more flexible ways to specify the default librarysearch path. In addition to R_LIBS and .Library, there are.Library.site (defaults to R_HOME/site-library) andR_LIBS_USER (defaults to a platform- and version-specificdirectory in ~/R). See ?.libPaths for details.o LAPACK has been updated to version 3.1.0. This should causeonly small changes to the output, but do remember that the signof eigenvectors (and principal components) is indeterminate.o PCRE has been updated to version 7.0.o Several functions handle row names more efficiently:- read.table() and read.DIF() make use of integer row nameswhere appropriate, and avoid at least one copy in assigningthem.- data.frame() and the standard as.data.frame() methods avoidgenerating long dummy row names and then discarding them.- expand.grid() and merge() generate compact 'automatic' rownames.- data.matrix() and as.matrix.data.frame() have a new argument'rownames.force' that by default drops 'automatic' row names.o <data frame>[i, j] is substantially more memory-efficient whenonly a small part of the data frame is selected, especiallywhen (part of) a single column is selected.o Command-line R (and Rterm.exe under Windows) accepts the options'-f filename', '--file=filename' and '-e expression' to followother script interpreters. These imply --no-save unless--save is specified.o Invalid bytes in character strings in an MBCS now deparse/printin the form "\xc1" rather than "<c1>", which means they can beparsed/scanned.o Printing functions (without source attributes) and expressionsnow preserves integers (using the L suffix) and NAs (usingNA_real_ etc where necessary).o The 'internal' objects .helpForCall, .tryHelp and topicName areno longer exported from 'utils'.o The internal regex code has been upgraded to glibc 2.5 (from 2.3.6).o Text help now attempts to display files which have an \encodingsection in the specified encoding via file.show().o R now attempts to keep track of character strings which areknown to be in Latin-1 or UTF-8 and print or plot themappropriately in other locales. This is primarily intendedto make it possible to use data in Western European languagesin both Latin-1 and UTF-8 locales. Currently scan(),read.table(), readLines(), parse() and source() allowencodings to be declared, and console input in suitablelocales is also recognized.New function Encoding() can read or set the declared encodingsfor a character vector.o There have been numerous performance improvements to the dataeditor on both Windows and X11. In particular, resizing thewindow works much better on X11.o Packages graphics and grid no longer require grDevices, asthey might be used only with third-party devices.DEPRECATED & DEFUNCTo symbol.C() and symbol.For() are defunct, and have been replacedby wrappers that give a warning.o Calling a builtin function with an empty argument is now alwaysan error.o The autoloading of ts() is defunct.o The undocumented reserved word GLOBAL.ENV has been removed.(It was yet another way to get the value of the symbol.GlobalEnv.)o The deprecated behaviour of structure() in adding a class whenspecifying with "tsp" or "levels" attributes is now defunct.o unix() is now finally defunct, having been deprecated forat least seven years.o Sys.putenv() is now deprecated in favour of Sys.setenv(),following the POSIX recommendation.o Building R with --without-iconv is deprecated.o Using $ on an atomic vector is deprecated (it was previouslyvalid and documented to return NULL).o The use of storage.mode<- for other than standard types (andin particular for value "single") is deprecated: use mode<-instead.INSTALLATIONo A suitable iconv (e.g. from glibc or GNU libiconv) isrequired. For 2.5.x only you can build R without it byconfiguring using --without-iconv.o There is support again for building on AIX (tested on 5.2 and 5.3)thanks to Ei-ji Nakama.o Autoconf 2.60 or later is used to create 'configure'. Thismakes a number of small changes, and incorporates the changesto the detection of a C99-compliant C compiler backported for2.4.1.o Detection of a Java development environment was added such thatpackages don't need to provide their own Java detection. Newlyadded make variables are JAVAC, JAVAH, JAR and JAVA_CPPFLAGS.R CMD javareconf was updated to look for the correspondingJava tools as well.In addition, Java detection honors user-supplied environmentvariables JAVA_CPPFLAGS, JAVA_LIBS and JAVA_LD_LIBRARY_PATH.o Added workaround for reported non-POSIX sh on OSF1. (PR#9375)o 'make install-strip' now works, stripping the executables andalso the shared libraries and modules on platforms where'libtool' knows how to do so.o Building R as a shared library and standalone nmath nowinstalls pkg-config files 'libR.pc' and 'libRmath.pc' respectively.o Added test for insufficiently complete implementation of sigaction.C-LEVEL FACILITIESo Functions str2type, type2char and type2str are now available inRinternals.h.o Added support for Objective C in R and packages (if available).o R_ParseVector() has a new 4th argument 'SEXP srcfile' allowingsource references to be attached to the returned expression list.o Added ptr_R_WriteConsoleEx callback which allows consoles todistinguish between regular output and errors/warnings.To ensure backward compatibility it is only used ifptr_R_WriteConsole is set to NULL.UTILITIESo Additional Sweave() internal functions are exported to helpwriting new drivers, and RweaveLatexRuncode() is now createdusing a helper function (all from a patch submitted by SethFalcon).o The following additional flags are accessible from R CMD config:OBJC, OBJCFLAGS, JAR, JAVA, JAVAC, JAVAH, JAVA_HOME, JAVA_LIBSand JAVA_CPPFLAGS.o R CMD build now takes the package name from the DESCRIPTIONfile and not from the directory. (PR#9266)o checkS3methods() (and hence R CMD check) now checks agreementwith primitive internal generics, and checks for additionalarguments in methods where the generic does not have a '...'argument.codoc() now knows the argument lists of primitive functions.o R CMD INSTALL and R CMD REMOVE now use as the default library(if -l is not specified) the first library that would be usedif R were run in the current environment (and they run R tofind it).o There is a new front-end Rscript which can be used for #!scripts and similar tasks. See help("Rscript") and 'AnIntroduction to R' for further details.o R CMD BATCH (not Windows) no longer prepends'invisible(options(echo = TRUE))' to the input script. Thiswas the default unless --slave is specified and the latter isno longer overridden.On all OSes it makes use of the -f argument to R, sofile("stdin") can be used from BATCH scripts.On all OSes it reports proc.time() at the end of the scriptunless q() is called with options to inhibit this.o R CMD INSTALL now prepends the installation directory (ifspecified) to the library search path.o Package installation now re-encodes R files and the NAMESPACEfile if the DESCRIPTION file specifies an encoding, and setsthe encoding used for reading files in preparing forLazyData. This will help if a package needs to be used in(say) both latin1 and UTF-8 locales on different systems.o R CMD check now reports on non-ASCII strings in datasets.(These are a portability issue, which can be alleviated bymarking their encoding: see 'Writing R Extensions'.)o Rdiff now converts CRLF endings in the target file, andconverts UTF-8 single quotes in either to ASCII quotes.o New recommended package 'codetools' by Luke Tierney providescode-analysis tools. This can optionally be used by 'R CMDcheck' to detect problems, especially symbols which are notvisible.o R CMD config now knows about LIBnn .o New recommended package 'rcompgen' by Deepayan Sarkarprovides support for command-line completion under the Unixterminal interface (provided readline is enabled) and theWindows Rgui and Rterm front ends.BUG FIXESo gc() can now report quantities of 'Vcells' in excess of 16Gb on64-bit systems (rather than reporting NA).o Assigning class "factor" to an object now requires it hasinteger (and not say double) codes.o structure() ensures that objects with added class "factor" haveinteger codes.o The "formula" and "outer" attributes of datasets 'ChickWeight','CO2', 'DNase', 'Indometh', 'Loblolly', 'Orange' and 'Theoph'now have an empty environment and not the environment used todump the datasets in the package.o Dataset 'Seatbelts' now correctly has class c("mts", "ts").o str() now labels classes on data frames more coherently.o Several 'special' primitives and .Internals could returninvisibly if the evaluation of an argument led to thevisibility flag being turned off. These includedas.character(), as.vector(), call(), dim(), dimnames(),lapply(), rep(), seq() and seq_along(). Others (e.g. dput()and print.default()) could return visibly when this was notintended.o Several primitives such as dim() were not checking the numberof arguments supplied before method dispatch.o Tracing of primitive functions has been corrected. It shouldnow be the case that tracing either works or is not allowedfor all primitive functions. (Problems remain if you make aprimitive into a generic when it is being traced. To be fixedlater.)o max.col() now omits infinite values in determining therelative tolerance.o R CMD Sweave and R CMD Stangle now respond to --help and --versionlike other utilities.o .libPaths() adds only existing directories (as it wasdocumented to, but could add non-directories).o setIs() and setClassUnion() failed to find some existingsubclasses and produced spurious warnings, now fixed.o data.frame() ignored 'row.names' for 0-column data frames, andno longer treats an explicit row.names=NULL differently fromthe default value.o identical() looked at the internal structure of the'row.names' attribute, and not the value visible at R level.o abline(reg) now also correctly works with intercept-only lmmodels, and abline() warns more when it's called illogically.o warning() was truncating messages atgetOption("warning.length") - 1 (not as documented), with noindication. It now appends '[... truncated]'.o Stangle/Sweave were throwing spurious warnings if options'result' or 'strip.white' were unset.o all.equal() was ignoring 'check.attributes' for list andexpression targets, and checking only attributes on raw vectors.Logical vectors were being compared as if they were numeric,(with a mean difference being quoted).o Calculating the number of significant digits in a number wasitself subject to rounding errors for digits >= 16. Thecalculation has been changed to err on the side of slightlytoo few significant digits (but still at least 15) rather thanfar too many. (An example is print(1.001, digits=16).)o unlink() on Unix-alikes failed for paths containing spaces.o substr() and friends treated NA 'start' or 'stop' incorrectly.o merge(x, y, all.y = TRUE) would sometimes incorrectly returnlogical columns for columns only in y when there were nocommon rows.o read.table(fn, col.names=) on an empty file returned NULLcolumns, rather than logical(0) columns (which is what resultsfrom reading a file with just a header).o grid.[xy]axis(label=logical(0)) failed.o expression() was unnecessarily duplicating arguments.o as.expression(<list>) returned a single-element expressionvector, which was not compatible with S: it now copies listselement-by-element.o supsmu(periodic = TRUE) could segfault. (PR#9502, detectionand patch by Bill Dunlap.)o pmax/pmin called with only logical arguments did not coerce tonumeric, although they were documented to do so (as max/mindo).o methods() did not know that cbind() and rbind() are internallygeneric.o dim(x) <- NULL removed the names of x, but this was alwaysundocumented. It is not clear that it is desirable but it isS-compatible and relied on, so is now documented.o which(x, arr.ind = TRUE) did not return a matrix (asdocumented) if 'x' was an array of length 0.o C-level duplicate() truncated CHARSXPs with embedded nuls.o Partial matching of attributes was not working as documentedin some cases if there were more than two partial matches orif "names" was involved.o data(package=character(0)) was not looking in ./data asdocumented.o summary.mlm() failed if some response names were "" (as caneasily happen if cbind() is used).o The postscript() and pdf() drivers shared an encoding listbut used slightly different formats. This caused problems ifboth were used with the same non-default encoding in the samesession. (PR#9517)o The data editor was not allowing Inf, NA and NaN to be enteredin numerical columns. It was intended to differentiatebetween empty cells and NAs, but did not do so: it now doesso for strings.o supsmu() could segfault if all cases had non-finite values.(PR#9519)o plnorm(x, lower.tail=FALSE) was returning the wrong tail forx <= 0. (PR#9520)o which.min() would not report a minimum of +Inf, andanalogously for which.max(). (PR#9522)o 'R CMD check' could fail with an unhelpful error when checkingRd files for errors if there was only one file and that had aserious error. (PR#9459)o try() has been reimplemented using tryCatch() to solve twoproblems with the original implementation: (i) try() would runnon-NULL options("error") expressions for errors within a try, and(ii) try() would catch user interrupts.o str(obj) could fail when obj contained a dendrogram.o Using <data frame>[, <last column>] <- NULL failed (PR#9565)o choose(n, k) could return non-integer values for integer n andsmall k on some platforms.o nclass.scott(x) and nclass.FD(x) no longer return NaN when var(x)or IQR(x) (respectively) is zero.hist() now allows breaks = 1 (which the above patch willreturn), but not breaks = Inf (which gave an obscure error).o strptime("%j") now also works for the first days of Feb-Dec.(PR#9577)o write.table() now recovers better if 'file' is an unopenedconnection. (It used to open it for both the column names andthe data.)o Fixed bug in mosaicplot(sort=) introduced by undocumentedchange in R 2.4.1 (changeset r39655).o contr.treatment(n=0) failed with a spurious error message.(It remains an error.)o as.numeric() was incorrectly documented: it is identical toas.double.o jitter(rep(-1, 3)) gave NaNs. (PR#9580)o max.col() was not random for a row of zeroes. (PR#9542)o ansari.test(conf.int=TRUE, exact=FALSE) failed.o trace() now works on S3 registered methods, by modifying theversion in the S3 methods table.o rep(length=1, each=0) segfaulted.o postscript() could overflow a buffer if used with a long'command' argument.o The internal computations to copy complete attribute lists didnot copy the flag marking S4 objects, so the copies no longerbehaved like S4 objects.o The C code of nlminb() was altering a variable withoutduplicating it. (This did not affect nlminb() but would haveif the code was called from a different wrapper.)o smooth(kind = "3RS3R") (the current default) used .C(DUP =FALSE) but altered its input argument. (This was masked byduplication in as.double.)o The signature for the predefined S4 method for as.character()was missing '...' .o readBin(<raw vector>) could read beyond the end of the vectorwhen size-changing was involved.o The C entry point PrintValue (designed to emulate auto-printing)would not find show() for use on S4 objects, and did not havethe same search path (for show(), print() and print() methods)as auto-printing. Also, auto-printing and print() of S4objects would fail to find 'show' if the methods name space wasloaded but the package was not attached (or otherwise not inthe search path).o print() (and auto-printing) now recognize S4 objects even when'methods' is not loaded, and print a short summary rather thandump the internal structure.o Sweave and Stangle had problems due to partial matching of codechunk names when run with split=TRUE.o install.packages() on a source package now ensures thatR CMD INSTALL sees the same library search path asinstall.packages() did when computing dependencies.o density() now ensures its 'y' values are non-negative. (PR#8876)o is.finite() and is.infinite() (and many other primitives)are not internally generic and so do not support S4 methods,which can no longer be set. (PR#7951)o nls(algorithm = "port") now accepts a list 'start' argument,as for the other methods (and as documented).o Standard errors from the "ar" method of predict() could bewrong for the last p predictions for models nearnon-stationarity. (PR#9614)*************************************************** ** 2.4 SERIES NEWS ** ***************************************************CHANGES IN R VERSION 2.4.1 patchedNEW FEATURESo The Simplified Chinese translations have been completed.BUG FIXESo co.intervals() sometimes failed to cover the largest value.o tempfile() is now random across sessions as well as within asession. (On some systems it would give the same hex suffixat the start of each session.)o Added infinite recursion test to internal function isMissing.(PR#9426)o The "Date" and "POSIXt" methods for cut() were not choosingthe first day of the year for breaks = "years".(In part, PR#9433.)o R is now able to deparse/print invalid multibyte strings inMBCS locales (such as UTF-8) using hex escapes. This meansthat e.g. demo(Hershey) works in all such locales.o optimize() could give incorrect answers in some rare problemswith exact symmetry about the midpoint of the intervalsupplied. (PR#9438)o The residuals from an lm() fit with no coefficients but anoffset were incorrect.o oneway.test() was expecting a literal formula and did notaccept a variable containing a formula.o The legacy Quartz device (used by console R) displayed itswindow outside the screen estate in some dual-head setups.Now it will be always displayed in the center of the mainscreen.o read.ftable() was not functional on non-seekable connectionssuch as URLs.o Some large memory allocations could cause segfaults orcrashes (e.g. followup to PR#9557).o Sweave() would drop characters from the end of chunk namesending in "R". (PR#9567)o library(), i.e. its internal checkConflicts(), now (again) prints"The following object(s) are masked .." only once per masked package.o methods:::cbind(x) {one argument} now works, calling cbind2(x)when 'x' is an S4 object.CHANGES IN R VERSION 2.4.1INSTALLATIONo The extraction of info from Subversion for an SVN checkout nowalso works for svn >= 1.4.0. However, on Windows the 'LastChanged Date' will be in the local timezone, and not in GMT aspreviously.o configure uses code borrowed from autoconf 2.60 to try harder toensure that a C99-compliant compiler is used. (It does so byappending to CC.) This avoids problems with systems such as FC5which override CFLAGS and thereby lose flags such as -std=gnu99.NEW FEATURESo rainbow(), heat.colors(), terrain.colors(), topo.colors() andcm.colors() all gain an 'alpha' argument to be passed to hsv().o dput() will give an incorrect representation of the row namesof a data frame with integer row names. This is now correctedwhen the object is recreated.C-LEVEL FACILITIESo Using STRICT_R_HEADERS applies to more reported clashes withWindows headers, including Calloc and Realloc. These andFree need to be prefixed by R_ when STRICT_R_HEADERS is defined.DEPRECATED & DEFUNCTo The previously undocumented behaviour of structure() in adding aclass when specifying "tsp" or "levels" attributes is nowdeprecated (with a warning).BUG FIXESo Fixed warning() to use .dfltWarn intead of .dfltStop for defaulthandling (PR#9274).o R would slow down when the product of the length of a vector andthe length of a character vector used to subset it exceeded 2^31.(PR#9280)o merge() now allows zero-row data frames.o add1.lm() had been broken by other changes for weighted fits.o axis.POSIXct() would sometimes give the wrong labels.o Help for a method call would fail. (PR#9291)o gzfile() returned an object of class "file" not "gzfile". (PR#9271)o load()ing from a connection had a logic bug in when it closedthe connection. (PR#9271)o The lowess() algorithm is unstable if the MAD of the residualsbecomes (effectively) zero: R now terminates the iterations atthat point. (This may result in quite different answers.)The 'delta' argument was incorrectly documented. (PR#9264)o abbreviate() would only work for strings of up to 8191 bytes,but this was not checked. Now longer strings are errors.o Drawing X11 rotated text was buggy for VERY small (negative)angle of rotation. Reported by Ben Bolker. (PR#9301)o The X11 data editor would crash in an MBCS locale if R wascompiled with FC's CFLAGS that add buffer overflow andstack-smashing detection.o rect() was not accepting border=NA in some cases involvingcross-hatching.o Fixes to S4 group generics to ensure that the correct number ofactive arguments are in the signature of the group and allmembers. Also a fix to keep the 'groupMembers' slot up to date.o S4 group generic "Logic" (with '&', '|', but not '!') has beencreated, following the green book (apart from '!').o removeClass() now takes care to remove any subclass referencesto the deleted class.o mle() (in stats4) might not have worked as intended when theorder of parameters in 'start' differed from that in thelog-likelihood. (PR#9313)o dotchart() now properly restores par() settings after itself.o system() on Mac OS X was blocking arbitrary signals during thecall although only SIGPROF was meant to be blocked.o methods cached via callNextMethod() and (sometimes) as() werebeing cached as directly specified although in fact they wereinherited. Caused problems in later search for inherited methods.o str() works properly for method definitions and other S4-classedfunction objects.o JAVA_LIBS are now set correctly on MacOS X.o Fix null-termination issue suspected of causing crash with FedoraExtra RPMS (PR#9339, Justin Harrington, analysis and fix from BillDunlap).o Name spaces restored via a saved session silently failed to cachetheir methods because the methods package was not yetattached. Fixed by attaching methods before restoring data.o rbind()ing a list to a data frame generated invalid row names,which were an error in 2.4.0. (PR#9346)o boxplot.stats(x) now returns the correct minimum instead of anerror for x <- c(1,Inf,Inf,Inf), and hence boxplot(x) "works".o promptClass() now uses \linkS4class{<ClassName>} instead ofof \link{<ClassName>-class}.o gc() no longer reports nonsense values for the number of usedVcells if the true value exceeds 2^31 (and hence over 16Gb ofheap is in use): it now reports NA. (PR#9345)o rapply() now detects more user errors in supplying arguments. (PR#9349)o boxplot() was ignoring argument 'boxfill'. (PR#9352)o plot.lm(which = 6, id.n = 0) did not work. (PR#9333)o .deparseOpts("delayPromises") was not matching the C code,returning 64 rather than 32.o bxp() could use partial matching on 'pars' when findingdefaults for some of its parameters, e.g. a setting of 'cex.axis'in 'pars' or inline was used to set a default for 'outcex'.o acf() now allows lag.max = 0 except when type="partial", andforces the lag 0 autocorrelation to 1. (PR#9360)o hist(*, include.lowest=., right=., plot=FALSE) does not warnanymore, (PR#9356) and more.o Some bugs in caching superclass/subclass relations and inremoving those relations on detach and on removeClass() havebeen fixed.o readBin() could return one too many strings if 'n' was anover-estimate. (PR#9361)o A request for an opaque colour in the pdf() device after atranslucent one did not set the transparency back to opaque in2.4.0.Semi-transparent background colours were not being plotted onthe pdf() device.o plot.lm(which=5) in the case of constant leverage re-orderedthe factor levels but not the residuals, so the labelling byfactor level was often incorrect.o packBits() was not accepting a logical argument. (PR#9374)o make install was omitting doc/FAQ and doc/RESOURCES.o A two-sample t.test(x, y, var.equal=TRUE) did not allow one of thegroups to be of size one.o The "ts" method for print() failed on some corrupted objectsof class "ts", e.g. those without a "tsp" attribute.o structure() reordered the "class" value given if there was a"tsp" value specified.o pairs() now does pass appropriate parts of '...' to the'diag.panel' argument. (PR#9384)o plot.lm() was using an incorrect estimate of dispersion forsome GLMs (including family=binomial and family=poisson).(PR#9316)o Subsetting operators were setting R_Visible too early, soassignments in arguments could make the result invisible.(PR#9263)o The tk-GUI was displaying a warning due to an extra comma inthe list of manuals (PR#9396)o packageDescription() now gives an explicit error on a corruptDESCRIPTION file.o There was a scoping issue with tcltk callbacks given asunevaluated expressions. This has only been partially fixed, acomplete fix probably requires redesign.o trace() had its return value documented incorrectly and wassometimes visible when it should not have been.o pchisq() would sometimes use the wrong tail when calculatingnon-central probabilities with lower.tail = FALSE. (PR#9406)o rm() could remove the wrong objects when passed an expression.(PR#9399) Now only names are allowed in the '...' argument,and the incorrect documentation of what happened withcharacter objects is corrected.o url() was not supporting 'encoding' except on file:// URLs.CHANGES IN R VERSION 2.4.0USER-VISIBLE CHANGESo The startup message now prints first the version string andthen the copyright notice (to be more similar to R --version).o save() by default evaluates promise objects. The old behaviour(to save the promise and its evaluation environment) can beobtained by setting the new argument 'eval.promises' to FALSE.(Note that this does not apply to promises embedded inobjects, only to top-level objects.)o The functions read.csv(), read.csv2(), read.delim(),read.delim2() now default their 'comment.char' argument to "".(These functions are designed to read files produced by othersoftware, which might use the # character inside fields, butare unlikely to use it for comments.)o The bindings in the base environment/name space (currently thesame thing) are now locked. This means that the values ofbase functions cannot be changed except viaassignInNamespace() and similar tricks.o [[ on a factor now returns a one-element factor (and not aninteger), as.list() on a factor returns a list of one-elementfactors (and not of character vectors), and unlist() on a listof factors returns a factor (and not an integer vector).These changes may affect the results of sapply() and lapply()applied to factors.o mauchly.test() now returns the W statistic (for comparabilitywith SAS and SPSS), rather than the z (which was accidentallynot named in the output)o sort(x, decreasing = FALSE, ...) is now a generic function.This means that 'partial' is no longer the second argument,and calls which used positional matching may be incorrect: wetry to detect them.o See the section on 'Changes to S4 methods': all packagesdepending on 'methods' need to be re-installed.NEW FEATURESo agrep(), grep(), strwrap(), strtrim(), substr() andrelated functions now coerce arguments which should becharacter via as.character() rather than internally (so methoddispatch takes place, e.g. for factors).chartr(), charfold(), tolower() and toupper() now coerce theirmain argument if necessary to a character vector viaas.character().Functions which work element-by-element on character vectorsto give a character result now preserve attributes includingnames, dims and dimnames (as suggested by the Blue Bookp. 144). Such functions include charfold(), chartr(), gsub(),strtrim(), sub(), substr(), tolower() and toupper(). (Notethat coercion of a non-character argument may lose theattributes.)agrep(value = TRUE) preserves names for compatibility withgrep().nchar() has always preserved dims/dimnames (undocumentedbefore) and now also preserves names.o .Deprecated and .Defunct take a new parameter, msg, that allowsfor the specification of the message printed and facilitatesdeprecation of calling sequences etc.o .Fortran() will map 'name' to lower case, and will work with'name' containing underscores.o The default is now .saveRDS(compress = TRUE)o The :: operator now also works for packages without name spacesthat are on the search path.o [[ on a list does not duplicate the extracted element unlessnecessary. (It did not duplicate in other cases, e.g. apairlist.)o argsAnywhere() works like args() on non-exported functions.o as.data.frame() gains a '...' argument.o Added an as.data.frame() method for class "ftable".o as.list(<an expression>) is now handled by internal code andno longer loses attributes such as names.as.list(<a list>) no longer duplicates (unnecessarily).o as.POSIX[cl]t can now convert character strings containingfractional seconds.o attach() can now attach a copy of an environment.o available.packages() and installed.packages() gain a 'fields'argument thanks to Seth Falcon.o axis.POSIXct() uses a different algorithm for ranges of 2 to 50days that will mark days at midnight in the current timezone(even if the graph crosses a DST change).o body<-() and formals<-() default to envir = environment(fun),that is they do not by default change the environment.(Previously they changed it to parent.frame().)o New function combn(x, m, ..) for computing on all combinations ofsize 'm' (for small 'm' !).o The cumxxx() functions now handle logical/integer argumentsseparately from numeric ones, and so return an integer resultwhere appropriate.o data.frame() has a new argument 'stringsAsFactor'. This andthe default for read.table(as.is=) are set from the new globaloption 'stringsAsFactors' via the utility functiondefault.stringsAsFactors().o dev.interactive() now has an optional argument 'orNone'.o df() now has a noncentrality argument 'ncp', based on acontribution by Peter Ruckdeschel.o example() gains an argument 'ask' which defaults to "TRUE whensensible", but the default can be overridden by setting option'example.ask'.o expand.grid() now has an argument 'KEEP.OUT.ATTRS' which cansuppress (the potentially expensive) "out.attrs" attribute. It nolonger returns an extraneous 'colnames' attribute.o The subset and subassign methods for factors now handle factormatrices, and dim() can be set on a factor.o There is now a format() method for class "ftable".o head(x, n) and tail(x, n) now also work for negative arguments,thanks to Vincent Goulet.o head.matrix() and tail.matrix() are no longer hidden, to be usedfor building head() and tail() methods for other classes.o If help() finds multiple help files for a given topic, a menuof titles is used to allow interactive choice.o help.search() now rebuilds the database if 'package' specifies apackage not in the saved database.o hist(*, plot = FALSE) now warns about unused arguments.o history() gains a 'pattern' argument as suggested by RomainFrancois.o integer(0) now prints as that rather than "numeric(0)" (italways deparsed as "integer(0)").o interaction(..., drop=TRUE) now gives the same result asinteraction(...)[,drop=TRUE] (it used to sometimes give adifferent order for the levels).o lag.plot() produces a conventional plot (not setting mfrow) ifonly one plot is to be produced.o lapply() does much less copying. Vector X are handled withoutduplication, and other types are coerced via as.list(). (As aresult, package 'boot' runs its examples 4% faster.)lapply(<a pairlist>) now coerces to a list (rather than traversethe pairlist from the beginning for each item).o legend() has new parameters 'box.lwd' and 'box.lty'.o lines() gains a simple method for isoreg() results.o load() no longer coerces pairlists to lists (which wasundocumented, but has been happening since 1998).o make.link() now returns an object of class "link-glm".The GLM families accept an object of this class for their'link' argument, which allows user-specified link functions.Also, quasi() allows user-specified variance functions.o mapply() uses names more analogously to lapply(), e.g..o matplot() now accepts a 'bg' argument similarly to plot.default() etc.o median() is now generic, and its default method uses mean()rather than sum() and so is more widely applicable (e.g. to dates).o Dummy functions memory.size() and memory.limit() are availableon Unix-alikes, for people who have not noticed that documentationis Windows-specific.o merge() works more efficiently when there are relatively fewmatches between the data frames (for example, for 1-1matching). The order of the result is changed for 'sort = FALSE'.o merge() now inserts row names as a character column and not afactor: this makes the default sort order more comprehensible.o Raw, complex and character vectors are now allowed in modelframes (there was a previously undocumented restriction tological, integer and numeric types.). Character vectors in aformula passed to model.matrix() are converted to factors andcoded accordingly.o modifyList() utility, typically for housekeeping nested lists.o x <- 1:20; y <- rnorm(x); nls(y ~ A*exp(-x^2/sig)) no longerreturns an unhelpful error message. In this and similar cases, itnow tries a wild guess for starting values.o Ops.difftime() now handles unary minus and plus.o Ops.Date() and Ops.POSIXt() now allow character arguments(which are coerced to the appropriate class before comparison,for Ops.POSIXt() using the current time zone).o There is a new option(max.contour.segments = 25000) which can beraised to allow extremely complex contour lines in contour()and contourLines(). (PR#9205)o options(max.print = N) where N defaults to 99999 now cuts printingof large objects after about N entries. print(x, ..., max = N)does the same for the default method and those building onprint.default().options("menu.graphics") controls if graphical menus should beused when available.options("par.ask.default") allows the default for par("ask")to be set for a newly-opened device. (Defaults to FALSE, theprevious behaviour.)The way option("papersize") is set has been changed. Onplatforms which support the LC_PAPER locale category, thesetting is taken first from the R_PAPERSIZE environmentvariable at run time, then from the LC_PAPER category("letter" for _US and _CA locales and "a4" otherwise). Onother platforms (including Windows and older Unixen), thechoice is unchanged.o package.skeleton() gains arguments 'namespace' and'code_files'.o par(ask=TRUE) now only applies to interactive R sessions.o parse() now returns up to 'n' expressions, rather than fillthe expressions vector with NULL. (This is now compatiblewith S.)o The 'version' argument for pdf() is now increasedautomatically (with a warning) if features which need a higherlevel are used.o pie() now allows expressions for 'labels', and empty slices.o There is a new '%.%' operator for mathematical annotations(plotmath) which draws a centred multiplication dot(a \cdot in LaTeX), thanks to Uwe Ligges.o predict.lm() gains a 'pred.var' argument. (Wishlist PR#8877.)o print.summary.{aov,glm,lm,nls} and print.{aov,glm} make use ofnaprint() to report when na.action altered the model frame.o print.table(T, zero.print=ch) now also replaces 0 by ch when T isnon-integer with integer entries.o Recursive rapply() which is similar to lapply but usedrecursively and can restrict the classes of elements to whichit is applied.o r2dtable() has been moved to package 'stats'.o New function read.DIF() to read Data Interchange Format files,and (on Windows) this format from the clipboard.o New experimental function readNEWS() to read R's own "NEWS" fileand similarly formatted ones.o readLines() has a new argument 'warn' to suppress warnings:the default behaviour is still to warn.o reg.finalizer() has a new argument 'onexit' to parallel theC-level equivalent R_RegisterFinalizerEx.o rep() is now a primitive function and under some conditionsvery much faster: rep.int() is still a little faster (but doesless). (Because it is primitive there are minor changes to thecall semantics: see the help page.)o The 'row.names' of a data frame may be stored internally as aninteger or character vector. This can result in considerablymore compact storage (and more logical row names from rbind)when the row.names are 1:nrow(x). However, such data framesare not compatible with earlier versions of R: this can beensured by supplying a character vector as 'row.names'.row.names() will always return a character vector, but directaccess to the attribute may not.The internal storage of row.names = 1:n just records 'n', forefficiency with very long vectors.The "row.names" attribute must be a character or integervector, and this is now enforced by the C code.o The "data.frame" and "matrix" methods for rowsum() gain an 'na.rm'argument.o Experimental support for memory-use profiling via Rprof(),summaryRprof(), Rprofmem() and tracemem().o save.image() [also called by sys.save.image() and hence from q()]now defaults to saving compressed binary images. To revert tothe previous behaviour set option "save.image.defaults": see?save.image.o There is a new primitive seq.int() which is slightly morerestricted than seq() but often very much faster, and newprimitives seq_along() and seq_len() which are faster still.o serialize(connection = NULL) now returns a raw vector (and nota character string). unserialize() accepts both old and newformats (and has since 2.3.0).o setwd() now returns the previously current directory (invisibly).o The function sort() is now sort.int(), with a new genericfunction sort() which behaves in the same way (except for theorder of its argument list) for objects without a class, andrelies on the '[' method for objects with a class (unless aspecific method has been written, as it has for class "POSIXlt").o sort.list() now implements complex vectors (PR#9039), and howcomplex numbers are sorted is now documented.o spline() and splinefun() now follow approx[fun] to have an argument'ties = mean' which makes them applicable also when 'x' hasduplicated values.o str(x) does not print the S3 "class" attribute when it is thesame as 'mode' (which is printed anyway, possibly abbreviated)and it puts it beside mode for atomic objects such as S3 class"table".o str(<data.frame>) now outputs 'data.frame' instead of`data.frame'; this may affect some strict (Package) tests.o str() now takes also its defaults for 'vec.len' and 'digits.d'from options('str') which can be set by the new strOptions().o symnum() has a new argument 'numeric.x' particularly useful forhandling 0/1 data.o Sys.getlocale() and Sys.setlocale() support LC_MESSAGES,LC_PAPER and LC_MEASUREMENT if the platform does.o Sweave has a new options 'pdf.encoding' and 'pdf.version' forits Rweave driver.o The character vector used by an output textConnection() hasa locked binding whilst the connection is open.There is a new function textConnectionValue() to retrieve thevalue of an output textConnection().o traceback() gains a 'max.lines' argument..Traceback is no longer stored in the workspace.o warning(immediate. = TRUE) now applies togetOption("warn") < 0 and not just == 0.o warnings() is now an accessor function for 'last.warning' (whichis no longer stored in the workspace) with a print() method.o The internal internet download functions have some newfeatures from libxml 2.6.26.o There is an option "HTTPUserAgent" to set the User Agent in Rdownload requests etc. Patch from S. Falcon.o PCRE has been updated to version 6.7.o The C function substituteList now has tail recursion expandedout, so C stack overflow is less likely. (PR#8141, fix byKevin Hendricks)o The (somewhat soft) 1023/4 byte limit on command lines is nowdocumented in 'An Introduction to R'.o The maximum number of open connections has been increased from50 to 128.o There is a new manual 'R Internals' on R internal stucturesplus the former appendices of 'Writing R Extensions'.o The autoloads introduced at the package re-organization have beenalmost completely removed: the one that remains is for ts().o The setting of the various Java configuration variables has beenimproved to refer to JAVA_HOME, and they are now documented inthe R-admin manual.o It is (again) possible to calculate prediction intervals from"lm" objects for the original data frame, now with a warningthat the intervals refer to future observations. Weightedintervals have also been implemented, with user-specifiableweights. Warnings are given in cases where the defaultbehaviour might differ from user expectations. See the?predict.lm for details.CHANGES TO S4 METHODSo The default prototype object for S4 classes will have its owninternal type in 2.4.0, as opposed to being an empty list (thecause of several errors in the code up to 2.3.1). Note that oldbinary objects, including class definitions, will beinconsistent with the type, and should be recreated.o S4 method dispatch has been completely revised to use cachedgeneric functions and to search for the best match amonginherited methods. See ?Methods andhttp://developer.r-project.org/howMethodsWork.pdfo Objects created from an S4 class are now marked by an internal flag,tested by isS4() in R and by macro IS_S4_OBJECT() in C. Thisis an efficient and reliable test, and should replace allearlier heuristic tests.o Some changes have been made to automatic printing of S4objects, to make this correspond to a call to show(), as per'Programming with Data'.o S4 generic and class definitions are now cached when the relatedpackage is loaded. This should improve efficiency and alsoavoid anomalous situations in which a class or generic cannotbe found.o trace() now creates a new S4 class for the traced object ifrequired. This allows tracing of user-defined subclasses of"function".DEPRECATED & DEFUNCTo The re-named tcltk functions tkcmd, tkfile.tail, tkfile.dir,tkopen, tkclose, tkputs, tkread are now defunct.o Argument 'col' of bxp() has been removed: use 'boxfill'.o Use of NULL as an environment is now an error.o postscriptFont() is defunct: use Type1Font().o La.chol() and La.chol2inv() are defunct (they were the same asthe default options of chol() and chol2inv).o La.svd(method = "dgesvd") is defunct.o Files install.R and R_PROFILE.R in packages are now ignored(with a warning).o The following deprecated command-line options to INSTALL havebeen removed (use the fields in the DESCRIPTION file instead):-s --save --no-save --lazy --no-lazy --lazy-data --no-lazy-datao Graphical parameter 'tmag' is obsolete.o mauchley.test() (package 'stats') is now defunct.o symbol.C() and symbol.For() are deprecated. They are required inS for use with is.loaded(), but are not so required in R.o load()ing an object saved in one of the formats used prior toR 1.4.0 is deprecated. Such objects should be re-saved in thecurrent format.o save(version = 1) is now deprecated.C-LEVEL FACILITIESo The convenience function ScalarLogical now coerces allnon-zero non-NA values to TRUE.o The vector accessor functions such as INTEGER, REAL andSET_VECTOR_ELT now check that they are called on thecorrect SEXPTYPE (or at least on a compatible one). See`Writing R Extensions' for the details and for a strictertest regime.o It is no longer possible to pass list variables to.C(DUP = FALSE): it would have given rise to obscure garbagecollection errors.o allocString is now a macro, so packages using it will need tobe reinstalled.o R_ParseVector was returning with object(s) protected in theparser if the status was PARSE_INCOMPLETE or PARSE_ERROR.o There is a new function Rf_endEmbeddedR to properly terminatea session started by Rf_initEmbeddedR, and both are nowavailable on Windows as well as on Unix-alikes. These andrelated functions are declared in a new header <Rembedded.h>.If R_TempDir is set when embedded R is initialized it isassumed to point to a valid session temporary directory: see`Writing R Extensions'.o There is a new interface allowing one package to make C routinesavailable to C code in other packages. The interface consistsof the routines R_RegisterCCallable and R_GetCCallable. Thesefunctions are declared in <R_ext/Rdynload.h>. This interfaceis experimental and subject to change.In addition, a package can arrange to make use of headerfiles in another (already installed) package via the'LinkingTo' field in the DESCRIPTION file: see 'Writing RExtensions'.UTILITIESo R CMD SHLIB now handles (as linker commands) -L*, -l* and *.a.o R CMD check now:- warns if there are non-ASCII characters in the R code (asthese will likely be syntax errors in some locale).- tests Rd cross-references by default, and tests for(syntactically) valid CITATION metadata.- tests that the package can be loaded, and that the packageand name space (if there is one) can each be loaded instartup code (before the standard packages are loaded).- tests for empty 'exec' or 'inst' directories.- checks if $(FLIBS) is used when $(BLAS_LIBS) is.- checks that all packages (except non-S4-using standardpackages) used in ::, :::, library() and require() calls aredeclared in the DESCRIPTION file, and 'methods' is declared ifS4 classes or methods are set.- throws an error if the standard packages 'methods' and'stats4' are imported from in the NAMESPACE file and notdeclared in the DESCRIPTION file.o The test script produced by massage-Examples.pl no longercreates objects in the base environment.o New utilties R CMD Stangle and R CMD Sweave for extracting S/Rcode from and processing Sweave documentation, respectively.o The DESCRIPTION file of packages may contain an 'Enhances:'field.o An R CMD javareconf script has been added to allow Javaconfiguration to be updated even after R has been installed.INSTALLATIONo The C function realpath (used by normalizePath()) is hidden onsome systems and we try harder to find it.o There is a new option --enable-BLAS-shlib, which compiles theBLAS into a dynamic library -lRblas and links against that.For the pros and cons see the R-admin manual.The defaults are now --without-blas (so you have explicitly toask for an external BLAS), and --enable-BLAS-shlib unlessa usable external BLAS is found or on AIX or on MacOS X 10.2and earlier.o MacOS X did not like having LSAME in both BLAS and LAPACKlibraries, so it is no longer part of the R-internal LAPACK.We now require an external BLAS to provide LSAME: it seemsthat nowadays all do.o The configure test for 'whether mixed C/Fortran code can berun' has been improved as on one system that test passed butthe Fortran run-time library was broken.o A precious configure variable DEFS can be set to pass defines(e.g. -DUSE_TYPE_CHECKING_STRICT) to C code when compiling R.o There is now a test for visible __libc_stack_end on Linuxsystems (since it is not visible on some recent glibc'sbuilt from the sources).o MacOS X 10.4 and higher now use two-level namespaces, singlemodule in a shared library and allow undefined symbols to beresolved at run-time. This implies that common symbols are nowallowed in package libraries. --enable-BLAS-shlib is supportedfor internal BLAS, external BLAS framework and external staticBLAS. An external dynamic library BLAS is NOT supported. (Butit can be easily used by replacing internal BLAS library filelater.) MacOS X < 10.4 does not support --enable-BLAS-shlib.o Dynamic libraries and modules use a flat namespace on MacOS X10.4 and higher if either Xcode tools don't support dynamiclookup (Xcode < 2.3) or the FORCE_FLAT_NAMESPACE environmentvariable is set. (The latter was introduced temporarily fortesting purposes and may go away anytime.)o configure now defaults to 'run-time linking' on AIX(and AIX < 4.2 is no longer allowed), using -bexpall ratherthan export/import files. If this works, it allows R to bebuilt in the same way as other Unix-alikes, including with Ras a shared library and with a shared BLAS.o The "mac.binary" package type now defaults to universalbinary. If a repository supports architecture-specific Macbinaries, they can be requested by using "mac.binary.xxx" incontrib.url(), where xxx is the desired architecture.o There is a new configure option --enable-memory-profiling toenable memory profiling with tracemem, Rprof, Rprofmem.BUG FIXESo The name of a Fortran symbol reported to be missing by.Fortran() is now the actual name. (What was reported to bean 'entry point' was missing the common leading underscore.)o print() on a MBCS character string now works properly acharacter at a time rather than a byte at time. (This doesnot affect MBCSs like UTF-8 and the Windows DBCSes which havenon-ASCII lead bytes and always worked correctly.)o glm() now recalculates the null deviance whenever there is anoffset (even if it is exactly zero to avoid a discontinuity inthat case, since the calculations with and without offset aredone by different algorithms).o Amongst families, quasi() accepted an expression for link andno other did. Now all accept an expression which evaluates toa one-element character vector (although e.g. 'logit' is takenas a name and not an expression).o trace() now accepts arguments where= and signature= for theold-style trace (no tracer or exit, edit==FALSE) and justprints a message on entry. Also the undocumented feature ofwhere=function now works for generic functions as well.o callNextMethod() failed for recursive use when the methods hadnonstandard argument lists. Now enforces the semantic rulethat the inheritance is fixed when the method containing thecallNextMethod() is installed. See Details in the documentation.o UseMethod() looked for the defining environment of 'generic' asif it were the current function, although some functions aregeneric for methods of a different generic.Lookup for S3 methods is confined to functions: previously anon-function 'fun.class' could have masked a function of thesame name.o Line types (lty) specified as hex strings were documented not toallow zero, but some devices accepted zero and handled it in adevice-dependent way. Now it is an error on all devices.(PR#8914)o Subassignment for a time series can no longer extend the series:it used to attempt to but failed to adjust the tsp attributes.Now window() must be used.o Function AIC() in package 'stats4' was not dispatching correctlyon S4 classes via logLik() because of name space issues.o Subsetting LANGSXPs could break the call-by-value illusion.(PR#7924) (patch from Kevin Hendricks).o parse() with n > 1 gave a syntax error if fewer than n statementswere available.o parse() with n > 1 gave strange results on some syntax errors.(PR#8815)o lag.plot() now respects graphical parameters for the axes.o Using a wrong link in family() now gives more consistent errormessages.o sort.list(method="radix") works on factors again.o object.size() is more accurate for vector objects (it takes intoaccount the smaller header and also the fixed sizes used inthe node classes for small vector objects).o addmargins(T, ...) now returns a "table" when 'T' is a "table", asits help page has always suggested.o remove() now explicitly precludes removing variables frombaseenv() and throws an error (this was previously ignored).o Saving the workspace at the end of a session now works as haslong been intended, that is it is saved only if something hasbeen added/deleted/changed during the current session.o The search for bindings in <<-, ->> and assign(inherits=TRUE)was omitting the base package, although this was notdocumented. Now the base package is included (but mostbindings there are locked).o dweibull(0, shape) was NaN not Inf for shape < 1. Also, thehelp for dgamma and dweibull gave support as x > 0, butreturned non-zero values for x = 0. (PR#9080)o Subsetting arrays no longer preserves attributes (it wasremoved for matrices in 1998).o The "factor" method of as.character() no longer maps level"NA" to "<NA>" (a legacy of before there were NA characterstrings).o terms(keep.order=TRUE) was not returning a valid "order"attribute.o The DLL registration code was not freeing .External symbols.o The internet download routines expected URLs of less than 4096bytes, but did not check. Now this is checked, and http:// URLsare allowed to be up to 40960 bytes.o parse(n=-1) threw a stack-imbalance error, and parse(n=3) didnot cope correctly with EOF during input.o Zero-column data frames had no names (rather than character(0)).o by() and acf() could get confused when they used very longexpressions as names.o residuals(<glm object>, type="working") was NA for cases withzero weight (whereas they are well-defined even though thecase was not used during the fitting) and the actual value isnow returned. This allows residuals to be computed from fitswith 'y = FALSE'.The residuals in a fitted "glm" object are computed moreaccurately: the previous formula was subject to cancellation.o loess() now checks the validity of its 'control' argument.o rownames(<0-row matrix>, do.NULL=FALSE) was wrong. (PR#9136)o apply() now works as documented when applied over 2 or moremargins with one of zero extent. (It used to drop dimensions.)o head() and tail() now also work row-wise for "table" and "ftable"objects.o NextMethod() could throw an error/crash if called from a methodthat was called directly rather than from a generic (so.Method was unset).o order(x, na.last = NA) failed for a zero-length x.o grep(pat, x, value = TRUE, perl = L) preserved names forL == TRUE && !is.na(pat) but not otherwise. Now it always does.o [rc]bind() now find registered methods and not just visible ones.o Printing a factor no longer ignores attributes such as names anddim/dimnames.o Command-line arguments after --encoding were ignored.o The check for impossible confidence levels was off by one inwilcox.test (PR#8557)o [[ on an environment could create aliases. (PR#8457)o pt() with a very small (or zero) non-centrality parameter couldgive an unduly stringent warning about 'full precision was notachieved'. (PR#9171)o writeChar() could segfault if 'nchars' was given silly values.o qt() and rt() did not work for vector 'ncp', and qt() did notwork for negative 'ncp'.o ns() failed to work correctly when 'x' was of length one.o identical() ignored tags on pairlists (including names ofattributes) and required an identical ordering forattribute values in their pairlists. Now names are comparedon pairlists, and attribute sets are treated as unordered.o If they were unused arguments supplied to a closure, onlythe first non-empty one was reported, despite the message.Unmatched empty arguments (such as f(1,,) for a function ofone argument) were ignored. They are now an error.o Calling a builtin with empty arguments used to silently removethem (and this was undocumented). Now this is an error unlessbuiltin is c() or list() or there are only trailing emptyarguments, when it is a warning (for the time being: this willbe made an error in R 2.5.0).o install.packages() ignored 'configure.args' if the vector wasunnamed.o biplot() now works if there are missing values in the data.o biplot() now passes par() values to all four axes (notjust those on sides 1 and 2).o [.acf now handles an empty first index.o Deparsing uses backticks more consistently to quotenon-syntactic names.o Assigning to the symbol in a for() loop with alist/expression/pairlist index could alter the index. Now theloop variable is explicitly read-only. (PR#9216)o Using old.packages() (and hence update.packages()) on an empty(or non-existent) library failed with an obscure message.o plot.xy() could segfault if supplied with an invalid 'col'argument. (PR#9221)o menu() with graphics=TRUE attempted to use Tcl/Tk on unix evenif DISPLAY was not set (in which case Tk is not available andso the attempt is bound to fail).o The print() method for 'dist' objects prints a matrix even forn = 2.o The cumxxx functions were missing some PROTECTs and so couldsegfault on long vectors (especially with names or wherecoercion to numeric occurred).o The X11() device no longer produces (apparently spurious)'BadWindow (invalid Window parameter)' warnings when run fromRcmdr.o legend() assumed that widths and heights of strings were positive,which they need not be in user coordinates with reversed axes.(In part, PR#9236)o The plot() methods for "profile.nls" objects could getconfused if 'which' had been used in the profile() call. (PR#9231)o boxplot() did not passed named arguments (except graphicsparameters) to bxp() as documented. (PR#9183)o Only genuinely empty statements act as 'return' in thebrowser, not say those starting with a comment char. (PR#9063)o summary.mlm() incorrectly used accessor functions to fake an"lm" object. (PR#9191)o prettyNum() was not preserving attributes, despite beingexplicitly documented to. (PR#8695)o It was previously undocumented what happened if a graphicalparameter was passed in both '...' and 'pars' to boxplot()and bxp(), and they behaved differently. Now those passed in'...' have precedence in both cases.o A failed subassignment could leave behind an object '*tmp*'.The fix also sometimes gives better error messages.o Using SIGUSR1 on Unix now always terminates a session, and nolonger is caught by browser contexts and restarts (such as try()).o In the 'graphics' package, in-line 'font=5' was being ignored(report by Tom Cook).o nls() looked for non-parameter arguments in a function call inthe wrong scope (from the body of nls).o Printing of complex numbers could misbehave when one of theparts was large (so scientific notation was used) and theother was so much smaller that it had no significant digitsand should have been printed as zero (e.g. 1e80+3e44i).o Using install.packages with type="mac.binary" and target pathstarting with ~ failed with a cryptic message while unpacking.o getwd() now works correctly when the working directory isunavailable (e.g. unreadable).o The alternative hypothesis in wilcox.test() was labelled by anunexplained quantity 'mu' which is now spelled out.The alternative hypothesis in ks.test() is clearer both in thedocumentation and in the result. (PR#5360)*************************************************** ** 2.3 SERIES NEWS ** ***************************************************CHANGES IN R VERSION 2.3.1 patchedBUG FIXESo help.search() incorrectly documented where the data base wassaved and what was in it.o str(<data.frame>, strict.width=.) produced an extraneous first line.o Improve bessel[IJKY]() out-of-range checks; for instance,besselI(0, nu) no longer warns.o cbind() on some non-vector objects (e.g. names) segfaulted.o xy.coords(numeric(0)) gave a misleading error message.o INSTALL has been changed to avoid a few problems with thebase (not XPG4) Solaris sed.o There were problems in src/main/printutils.c on some platformsthat did not have va_copy.o [pq]unif allowed infinite ranges but handled theminconsistently. (PR#8958)[pq]unif claimed to allow min == max but did not do so.o Subassignment within raw arrays of 3 or more dimensions was notimplemented.o environment<-() did not even check if duplication was required.o rt() was wrong for non-central t-distributions. qt() was wrongfor non-central distributions far enough in the left tail(reported by Long Qu). (PR#9050)o R CMD Rdconv --type=Ssgm no longer drops a \keyword{} if it is theonly one (one letter typo patch by Bill Dunlap). (PR#9051)o poly(x, y, .., raw = TRUE) now does follow 'raw'.o plot(0/ -1:1, type = "s") now works. (PR#9046)o write.table(row.names=FALSE) does now quote column names. (PR#9044)o rf() was wrong for non-central F (PR#9055). qf() was wrong fornon-central F with denominator df > 1e8.o The C function dummy_vfprint had a potential memory leak. Thisshowed up with some connections when used with output of morethan 100,000 bytes in a single call.o vignette() did not work if more than one vignette with thesame name was installed (PR#9069).o mget() did not check that 'ifnotfound' was a list, and workedincorrectly if it was a list of length > 1. Now 'ifnotfound'is (if possible) coerced to a list.o The internal check for conformance of time series assumed that the'tsp' attribute was integer, whereas it was enforced to benumeric by the attribute-setting code.o Sweave() did not treat \begin{document} in comments correctly(PR#9073).o diff(x) gave wrong result when x was "POSIXlt" object.o title() could crash R when passed a long non-character vector.(PR#9115)o Functions rgb(), hsv() and hcl() lost names unless 'alpha' wasspecified. (In part, PR#9118)o The residuals() method for "glm" failed unless 'y = TRUE' forthe fit: it now works for "working" and "partial" residualsand gives a useful error message for other types. (PR#9124)o R CMD Rdconv did not close the .Rd file, which matters on Windows.(PR#9126)o anova.mlm() could fail if applied to a single model.o stopifnot(<FALSE-expr>) now gives a better message for a *long*expression.CHANGES IN R VERSION 2.3.1NEW FEATURESo In lm() and glm(), offsets are allowed to be length 1 (andif so are replicated to the number of cases).o The \uxxxx notation for Unicode characters in input stringscan now be used on any platform which supports MBCS, even ifthe current locale is not MBCS (provided that the Unicodecharacter is valid in the current character set).o The quasibinomial() family now allows the "cauchit" link. (PR#8851)o edit.data.frame() no longer (silently) coerces character columnsto factor.C-LEVEL FACILITIESo The variables controlling stack checking are made available viaRinterface.h to front-ends embedding R: see 'Writing R Extensions'o R_SignalHandlers (defined in Rinterface.h) can be set to 0 tosuppress the R signal handlers in front-ends embedding R.INSTALLATION CHANGESo There have been a number of changes to help installation onplatforms that no one had beta-tested.- Changes related to older header files, e.g. on Redhat 8.0/9.- Problems with 'make install' on older (<3) versions of bashon Solaris and elsewhere.- AIX 5.2/gcc issues with needing -lm when making modules X11and vfonts.- Some versions of Solaris and AIX had an fcntl.h thatredefined 'open' to be 'open64' and thereby brokecompilation of src/main/connections.c and elsewhere.o 'make uninstall' works better on a build using a namedsubarchitecture.BUG FIXESo min(), max(), sum() and prod() gave nonsensical answers withan empty list or raw argument.o sum() on a data frame did not allow multiple arguments. (PR#8385)o charmatch() and pmatch() did not specify they applied only tocharacter vectors. Now they do, and attempt to coerce 'x' and'target' to character before attempting matching.o The Summary() methods for data.frame, Date, POSIXct, POSIXltand difftime all required an argument which can match 'x',although the generics did not.o regexpr() now accepts 0-length 'text' inputs.o help.search() no longer errors out on a wrongly installed package(with no "hsearch.rds" file).o The LaTeX version of the package reference manual was omittingsome topics, and was not sorting the foo-package topic first.o Serializing (e.g. via save()) is better protected against Cstack overflow, which will now abort the conversion but nolonger crashes the R process on some platforms.o rbind()ing dataframes with a single row could lead to acorrupt data frame (a problem with the fix to PR#8506).o plot(lm(y ~ 1)) now works also for 'which = 5'.o dbeta(0, 1, a, 0) now correctly gives 'a' (limit) instead of 0,and dbeta(0, a, b, ncp) now returns Inf instead of NaN.o demo(Hershey) was failing on the Cyrillic octal codes in locales(e.g. UTF-8) in which these are invalid.o mean() on an integer (or logical) vector was treating NAs asactual values (unless na.rm = TRUE).o mean() on a complex vector was calculated incorrectly incode to improve precision (PR#8842, John Peters).o Graphical parameters bg, cex, col, lty, and lwd were beingchecked as being of length one even by functions such astitle() that ignored them. (Functions such as lines() andpoints() allow them to be of length > 1, so they might bepassed through ... to other high-level graphical functionswhich then used to reject them.)o str() now is fast again for large character vectors.o edit() would default the environment of a function to .BaseEnv,instead of to .GlobalEnv.o lm() and glm() coerce their 'weights' and 'offset' values tovector to avoid problems with specifying them as 1D or n x 1arrays.o image() with one or both axes on log scales would give aspurious warning; contour() would give an error.o legend() with log axes would place the title in the wrong place.o edit.data.frame() was not returning factors edited withfactor.mode="numeric" to factors.o edit.matrix() tried to set rownames and colnames from theoriginal matrix even if the sizes had been altered, andignored changes made to the column names. 'edit.row.names' hasa more sensible default (if the rownames are non-NULL).o bindingIsLocked() was returning invalid values of a logicalvector on some platforms.o merge.data.frame() did not make the column names unique (byappending elements of 'suffixes') when performing a Cartesianproduct. (PR#8676)o rbind.data.frame() matches up the names of columns (which wasundocumented), but failed to do so when checking if it wasdealing with a factor column. (PR#8868)If rbind() was used on data frames with duplicated names itproduced a corrupt data frame.o dt(x, df, ncp= not.0) no longer gives erratic values for|x| < ~1e-12. (PR#8874)o \code{\linkS4class{.}} now works.o ccf() aligns time series by ts.intersect() rather thants.union() and so is less likely to need a non-defaultna.action. (PR#8893)o optim(method="CG") could return a value that did notcorrespond to $par for very badly behaved functions on whichthe second phase of the line search failed. (PR#8786)o print.ts() could fail on a corrupt time series: it now warns anddoes the best it can.CHANGES IN R VERSION 2.3.0USER-VISIBLE CHANGESo In the grid package there are new 'arrow' arguments togrid.line.to(), grid.lines(), and grid.segments()(grid.arrows() has been deprecated).The new 'arrow' arguments have been added BEFOREthe 'name', 'gp' and 'vp' arguments so existing code thatspecifies any of these arguments *by position* (not by name)will fail.o all.equal() is more stringent, see the PR#8191 bug fix below.o The data frame argument to transform() is no longer called 'x',but '_data'. Since this is an invalid name, it is less likelyto clash with names given to transformed variables. (Peoplewere getting into trouble with transform(data, x=y+z).)NEW FEATURESo arima.sim() has a new argument 'start.innov' for compatibilitywith S-PLUS. (If not supplied, the output is unchanged fromprevious versions in R.)o arrows() has been changed to be more similar to segments():for example col=NA omits the arrow rather than as previously(undocumented) using par("col").o as.list() now accepts symbols (as given by as.symbol() akaas.name()).o atan2() now allows one complex and one numeric argument.o The 'masked' warnings given by attach() and library() now onlywarn for functions masking functions or non-functions maskingnon-functions.o New function Axis(), a generic version of axis(), with Date andPOSIX[cl]t methods. This is used by most of the standardplotting functions (boxplot, contour, coplot, filled.contour,pairs, plot.default, rug, stripchart) which will thus label xor y axes appropriately.o pbeta() now uses TOMS708 in all cases and so is more accuratein some (e.g. when lower.tail = FALSE and when one of theshape parameters is very small).o [qr]beta(), [qr]f() and [qr]t() now have a non-centrality parameter.o [rc]bind and some more cases of subassignment are implementedfor raw matrices. (PR#8529 and PR#8530)o The number of lines of deparsed calls printed by browser() andtraceback() can be limited by the option "deparse.max.lines".(Wish of PR#8638.)o New canCoerce() utility function in "methods" package.o [pq]chisq() are considerably more accurate for moderate (up to80) values of ncp, and lower.tail = FALSE is fully supportedin that region. (They are somewhat slower than before.)o chol(pivot = TRUE) now gives a warning if used on a (numerically)non-positive-definite matrix.o chooseCRANmirror() consults the CRAN master (if accessible) tofind an up-to-date list of mirrors.o cov.wt() is more efficient for 'cor = TRUE' and has a new 'method'argument which allows 'Maximum Likelihood'.o do.call() gains an 'envir' argument.o eigen() applied to an asymmetric real matrix now uses atolerance to decide if the result is complex (rather thanexpecting the imaginary parts of the eigenvalues to be exactlyzero).o New function embedFonts() for embedding fonts in PDF orPostScript graphics files.o fisher.test() now uses p-values computed via hypergeometricdistributions for all 2 by 2 tables. This might be slightlyslower for a few cases, but works much better for tables withsome large counts.There is a new option to simulate the p-value for larger than2 x 2 tables.o for() now supports raw vectors as the set of indices.o getNativeSymbolInfo() is vectorized for the 'name' argument. Itreturns a named list of NativeSymbolInfo objects, but isbackward compatible by default when called with a charactervector of length 1, returning the NativeSymbolInfo object.o help.search() no longer attempts to handle packages installedprior to R 2.0.0, and reports the current path to thepackage (rather than where it was originally installed: thisinformation is not shown by the print() method).o Added "hexmode" to parallel "octmode".o install.packages() now does tilde expansion on file pathssupplied as 'pkgs'.o install.packages() has additional arguments 'configure.args' and'clean' which allow the caller to provide additional argumentsto the underlying R CMD INSTALL shell command when installingsource packages on a Unix-alike.o is.loaded() has a new argument 'type' to confine the search tosymbols for .C, .Fortran, .Call or .External: by default itlooks for a symbol which will match any of them. It is nowinternal and not primitive, so argument matching works in theusual way.o The symmetry test for matrices used in eigen() has been ``exported''as the 'matrix' method of a new S3-generic 'isSymmetric().o .leap.seconds and the internal adjustment code now know aboutthe 23rd leap second on 2005-12-31: the internal code uses arun-time test to see if the OS does.o The 'col' argument of legend() now defaults to par("col")(which defaults to "black", the previous default), so thatthe lines/symbols are shown in the legend in the colour thatis used on the plot.o log2() and log10() call C functions of the same name ifavailable, and will then be more likely to be precise tomachine accuracy.o new.packages() gains a ... argument to pass e.g. 'destdir' toinstall.packages(). (Wish of PR#8239.)o nls() now supports 'weights'.o The vector passed as the first argument of the 'fn' and 'gr'arguments of optim() has the names (if any) given to argument'par'.o options(expressions) is temporarily increased by 500 duringerror-handling. This enables e.g. traceback() to work whenthe error is reaching the limit on the nesting of expressions.o page() accepts general R objects, not just names (andpreviously undocumented) character strings. This allows theobject to be specified as a call, for example. More optionsare allowed in its '...' argument.o pairs() allows a wider class of inputs, including data frameswith date and date-time columns.o par() and the in-line use of graphical parameters produce moreinformative error messages, distinguishing betweennon-existent pars and inappropriate use of valid pars.Graphical parameters 'family', 'lend', 'ljoin' and 'lmitre'can now be set in-line.There is no longer a warning if non-settable pars are usedin-line, but there is an appropriate warning if unknown parsare passed.The length limit for the 'family' parameter has been increasedto 200 bytes, to allow for the names of some CID-keyed fontsin multi-byte locales.o The pdf() device now allows 'family' to be specified in the samegenerality as postscript().o The pdf() device writes /FontDescriptor entries for all fontsexcept the base 14, and does not write font entries for unusedfonts.o Plotmath allows 'vartheta', 'varphi' and 'varsigma' (or 'stigma')as synonyms for 'theta1', 'phi1' and 'sigma1', and the helppage has a note for TeX users.o plot.xy() now takes its default arguments from thecorresponding par() settings, so points(type="l") andlines(type="p") behave in the same way (and more obviously,also for type="b").o poly() has a new argument 'raw', mainly for pedagogical purposes.o The class "POSIXlt" now supports fractional seconds (as"POSIXct" has always done). The printing of fractional secondsis controlled by the new option "digits.secs", and by default is off.o postscript() supports family = "ComputerModernItalic" forComputer Modern with italic (rather than slanted) faces.o The postscript()/pdf() font metrics for the 14 standard fonts(only, not the rest of the common 35) have been updated toversions from late 1999 which cover more glyphs. There arealso a few differences in the metrics and hence the outputmight be slightly different in some cases.o The way families can be specified for postscript() and pdf()has been expanded to include CID-keyed fonts, with newfunctions Type1Font() and CIDFont() to set up such fontsfamilies.o prettyNum() has new arguments 'preserve.width' and 'zero.print'.When the former is not "none", as in calls from format() andformatC(), the resulting strings are kept at the desired widthwhen possible even after adding of 'big.mark' or 'small.mark'.o proc.time() and system.time() now record times to 1ms accuracywhere available (most Unix-like systems).o The initialization methods for the quasi() family have beenchanged to depend on the variance function, and in particularto work better for the "mu(1-mu)" variance function. (PR#8486)o read.table() gains a 'flush' argument passed to scan().o require() now takes a 'lib.loc' argument.o The second argument 'size' to sample() is required to havelength 1, so that errors when supplying arguments are moreeasily detected.o The default is now compress = !ascii in save() (but not save.image).o scan() and write.table() now have some interruptibility, whichmay be useful when processing very large files.o A new heuristic test, seemsS4Object() is supplied, along with asimilar C-level test, R_seemsS4Object(object). The testdetects probable S4 objects by their class's attribute. Seethe help page.o S3 classes can now be made non-virtual S4 classes by supplying aprototype object in the arguments to setOldClass().o splinefun() returns a function that now also has a 'deriv' argumentand can provide up to the 3rd derivative of the interpolatingspline, thanks to Berwin Turlach.o stopifnot(A) now gives a better error message when A has NAs, anduses "not all TRUE" when A has length >= 2.o str()'s default method has a new argument 'strict.width' which canbe used to produce strict 'width' conforming output. A newoptions(str = list(strict.width = *)) setting allows to controlthis for a whole session.o summary.nls() has a new argument 'correlation' that defaultsto FALSE (like summary.lm).o Sys.sleep() has sub-millisecond resolution on Unix-alikeswith gettimeofday().o Sys.time() now has sub-millisecond accuracy on systemssupporting the POSIX call gettimeofday, and clock-tickaccuracy on Windows.o The new function timestamp() adds a time stamp to the savedcommand history on consoles which support it.o New function tcrossprod() for efficiently computing x %*% t(x)and x %*% t(y).o The suffix used by tempfile() is now in hex on all platformsand guaranteed to be at least 6 hex digits (usually 8).o trace() now works more consistently and more like itsdocumentation, in particular the assertions about old tracingbeing removed for new. For debugging purposes (of R) amechanism for debugging the trace computations themselves wasadded. See trace.R.o The implementation of trace() has beem made more general bycalling a function to do the trace interaction, and recover()now detects trace calls to trim the irrelevant code underneath.o unserialize() can now also read a byte stream from a raw vector.o The useDynLib() directive in the NAMESPACE file now accepts thenames of the native/foreign symbols that are to be resolved inthe DLL for use in .C/.Call/.Fortran/.External calls. Thesecan be used as regular R variables instead of the (routinename, PACKAGE) pairs currently recommended. Alternative namescan be given for the R variables mapping to these symbols.The native routine registration information can also be useddirectly via useDynLib(name, .registration = TRUE). See the'Writing R Extensions' manual for more details.checkFF() (package 'tools') has been updated accordingly.o validObject() has an option complete=TRUE that recursivelychecks the objects in the slots. Not used when new(...)checks validity.o New Vectorize() function, a wrapper for mapply().o write.ftable() has gained an argument 'append = FALSE' (thanks toStephen Weigand).o On Unix-alikes, X11() now has arguments to request the initialposition of the window, and 'gamma' defaults to the value ofgetOptions("gamma"). These changes are consistent with thewindows() device.o X11() and the Unix-alike data entry window can have properties(including geometry) set by X resources: see their help files.o xy.coords() & xyz.coords() now have NULL defaults for their 'y' or'y' and 'z' arguments. This is more consistent with their earlierdocumentation, and may be convenient for using them.o Non-syntactic names of list elements are now printed quoted bybackticks rather than double quotes.o There is some basic checking for imminent C stack overflow (whenthe evaluation depth and the user interrupts are checked).On systems with suitable OS support (not Windows), segfaultsfrom C stack overflow are caught and treated as an R error.New function Cstack_info() reports on stack size and usage.options(expressions) reverts to the default of 5000 nowstack checking is in place.o Package tcltk does not try to initialize Tk on Unix-alikesunless a DISPLAY variable is present. This allows packagesdependent on tcltk to be installed without access to an X server.o The code used to guess timezone offsets where not supplied bythe OS uses a different algorithm that is more likely to guessthe summer-time transitions correctly.o Package tools contains translation tables 'Adobe_glyphs' and'charset_to_Unicode'.o Changed the environment tree to be rooted in an emptyenvironment, available as emptyenv(). baseenv() has beenmodified to return an environment with emptyenv() as parent,rather than NULL.o gettext has been updated to 0.14.5.o PCRE has been updated to version 6.4.o The method $.DLLInfo resolves the specified symbol in the DLL,returning a NativeSymbolInfo object. Use [[ to access the actualvalues in the DLLInfo object.o On systems with either vasprintf or both va_copy and a vsnprintfwhich reports the size of buffer required, connections such asgzfile() and bzfile() can now write arbitrarily long lines,not just 100000 chars.o The R session temporary directory is now set in C code usingthe same algorithm whether or not the shell front-end is usedand on all platforms. This looks at environment variablesTMPDIR, TMP and TEMP in turn, and checks if they point to awritable directory.o Some of the classical tests put unnecessary restrictions on theLHS in the formula interface (e.g., t.test(x+y ~ g) was notallowed).o On suitably equipped Unix-alike systems, segfaults, illegaloperations and bus errors are caught and there is a simpleerror-handler which gives the user some choice as to what todo in interactive use.On Windows access violations and illegal instructions arecaught with a simple error handler.o Tracebacks now include calls such as .C/.Fortran/.Call, whichwill help if errors occur in R code evaluated by compiled codeand in tracebacks presented by the segfault etc handlers.o Treatment of signature objects and method definition objects hasbeen modified to give cleaner printing and more consistency inthe treatment of signatures. A sometimes useful utility,methodSignatureMatrix(), is now exported.o Printing the results of codoc() from package tools now helpfullysummarizes the found code/documentation mismatches.o R refrains from printing a final EOL upon exiting the main loopif the quiet flag is on and if the save action is known (e.g. thisis true for --slave).DEPRECATED & DEFUNCTo The deprecated and undocumented use of atan() with two argumentshas been removed: instead use atan2().o write.table0() is defunct in favour of write.table().o format.char() is defunct in favour of format.default().o Support for the long-deprecated (and no longer documented)arguments --min-vsize --min-nsize --max-vsize --max-nsize--vsize --nsize of R CMD BATCH has been removed.o The 'debian' subdirectory has been removed from the sources.o The 'vfont' argument of axis() and mtext() has been removed:use par(family=) instead.o The unused graphical parameter "type" has been removed: itinvited confusion with the 'type' argument to default methodsof plot(), points() and lines().o nlsMethod() and profiler() are no longer exported from the statsname space (and nlsMethod.plinear() is no longer registered asa method, as nlsMethod() was not generic).o The re-named tcltk functions tkcmd, tkfile.tail, tkfile.dir,tkopen, tkclose, tkputs, tkread are now formally deprecated.o Argument 'col' of bxp() is now formally deprecated.o Use of NULL as an environment is deprecated and gives a warning.o postscriptFont() is deprecated in favour of Type1Font() (whichis just a change of name).o La.chol() and La.chol2inv() are deprecated (they have since R1.7.0 been the same as the default options of chol() and chol2inv).o La.svd(method = "dgesvd") is deprecated.o The use of install.R and R_PROFILE.R files in packages isdeprecated: use the DESCRIPTION file instead to arrange tosave an image or to load dependent packages.The following command-line options to INSTALL are deprecated(use the fields in the DESCRIPTION file instead):-s --save --no-save --lazy --no-lazy --lazy-data --no-lazy-datao Graphical parameter 'tmag' (which is long unused) is deprecated.INTERNATIONALIZATIONA set of patches supplied by Ei-ji Nakama has been incorporated.o New postscript encodings for CP1253, CP1257 and Greek (ISO 8859-7).o Support for East Asian CID-keyed fonts in pdf() and postscript().Although these usually contain Latin characters no accurateAFMs are available and so CID-keyed fonts are intended onlyfor use with CJK characters.o Wide-character width functions wc[s]width are provided thatovercome problems found with OS-supplied ones (and thosepreviously used by R on Windows). This means thatdouble-width CJK characters are now supported on allplatforms. It seems that the width of some characters (andnot just CJK characters) depends on which CJK locale's fontsare in use and also on the OS.Revised wide-character classification functions areprovided for use on Windows, AIX and MacOS X to replacedeficient OS-supplied ones.o There is support for MBCS charsets in the pictex() graphicsdevice, and rotated (by 90 degrees) text may work better.o The \u (and \U except on Windows) notation for characters whichis supported by the parser in all MBCS charsets is now alwaysinterpreted as a Unicode point, even on platforms which do notencode wchar_t in Unicode. These are now a syntax error insingle-byte locales.o The default encoding for postscript() and pdf() is chosen tobe suitable for the current locale, if that is a single-bytelocale which is supported. This covers European (includingGreek) and Cyrillic languages.In UTF-8 locales, a suitable single-byte encoding is chosenfor postscript() and pdf(), and text translated to it.o xfig() gains an 'encoding' argument.o There are some message translations into Spanish.INSTALLATION CHANGESo The encoding files for pdf()/postscript() have been moved todirectory 'enc' in package 'grDevices'.o Support for MBCS is only enabled if iconv is found and itsupports enough conversions. (libiconv does.)o In an MBCS locale, make check now translates the graphicsexamples from Latin-1. This ensures that they will workcorrectly in UTF-8: it is possible that in other MBCS localesthey will now fail (rather than work completely incorrectly).o There is a new test, 'test-Docs', which as part of 'makecheck-devel' tests the code in the documentation. Currentlyit runs doc/manual/R-{exts,intro}.R and the compiled code inR-exts.c.o The workaround to allow an external LAPACK-containing BLASsuch as libsunperf to be used with the internal LAPACK hasbeen removed. If you have such a library you may now needto use --with-lapack. It is no longer possible to use someolder versions of libsunperf, e.g. Forte 7 on 64-bit builds.o A substitute for mkdtemp is provided, so it is now alwaysused for R_TempDir.o Most of the functions checked for by 'configure' also havedeclarations checked for in the appropriate header.o The top-level documentation files AUTHORS COPYING.LIB COPYRIGHTSFAQ RESOURCES THANKS have been moved to doc, and COPYING and NEWSare installed there. The file Y2K has been removed from thedistribution.o The extension .lo is no longer used in building R (only inthe optional build of libRmath.so): this allows a considerablesimplification of the Makefiles.o Direct support for f2c has been removed: it can still be usedvia a script which makes it look like a Fortran compiler.(src/scripts/f77_f2c is an example of such a script.)o There is a new flag SAFE_FFLAGS which is used for thecompilation of dlamc.f. It is set by configure for knownproblem cases (recent g77 and gfortran), but can be overriddenby the user.o The standard autoconf macros for large-file support are now used,and these are enabled unless --disable-largefile is specified.This replaces --enable-linux-lfs (and is now selected by default).o Visibility attributes are used where supported (gcc4/gfortran onsome platforms, also gcc3/g77 on FC3 and partially elsewhere).The main benefit should be faster loading (and perhaps betteroptimized code) in some of the dynamic shared objects (e.g.libR.so and stats.so).o The *PICFLAGS are taken to be -fpic rather than -fPIC wherepossible. This will make no difference on most platforms:-fPIC is needed on Sparc (and still used there), but -fpicshould give slightly better performance on PowerPC (although-fPIC is used on PPC64 as it is needed to build libR.so there).o More use is made of inlining for small utility functions suchas isReal. Because this can only be done portably with C99constructs (and we know of no actual implementation), this isonly done for the GNU C compiler.o There is an experimental feature to allow shared installationsof sub-architectures. See the R-admin manual.o All platforms now use R's internal implementation of strptime,which allows fractional seconds. (The major platforms werealready using it.)o The dlcompat work-around for old Mac OS X systems (<= 10.2)has been removed. External dlcompat must be installed if needed.UTILITIESo R CMD check now uses an install log by default.o R CMD check works for packages whose package name is differentfrom the directory name in which it is located.o R CMD INSTALL now uses more randomness in the temporarydirectory name even on systems without mktemp -d.o R CMD f77 has been removed now f2c is no longer supported.o The version string shown in the startup message and by"R --version", and that stored in variable R.version.stringare now in exactly the same format.o The base name of a help file needs to be valid as part of a file://URL, so R CMD check now checks the names are ASCII and do notcontain % .o R CMD check now warns about unknown sections in Rd files, andinvalid names for help, demo and R files, as well as unlikelyfile names in the 'src' directory. The latter is controlledby option --check-subdirs and by default is done if checking atarball without a configure script.R CMD build excludes invalid files in the 'man', 'R' and 'demo'subdirectories.o \usepackage[noae]{Sweave} in the header of an Sweave filesupresses auto-usage of the ae package ("almost European"fonts) and T1 input encoding.DOCUMENTATIONo Rd format now allows \var{} markup inside \code{} and \examples{}.o Markup such as --, ---, < and > is handled better whenconverting .Rd files to [C]HTML.o There is new markup \link[=dest]{name} to generate a link to topic'dest' which is shown as 'name', and \linkS4class{abc} whichexpands to \link[=abc-class]{abc}, for cross-referencing therecommended form of documentation for S4 classes.PACKAGE INSTALLATIONo There is now some support for Fortran 90/95 code in packages:see `Writing R Extensions'.o Installation of man sources and demos is now done by R code.The restrictions on the names of help files, R files andof demos are now enforced (see `Writing R Extensions').o Packages which contain compiled code can now have more thanone dot in their name even on Windows.o The Meta/hsearch.rds database saved now contains LibPath="".This information is now always recreated when help.search() isrun, but the field is retained for back-compatibility.o update.packages() now has a '...' argument to be passed toinstall.packages(), including the formerly separate arguments'destdir' and 'installWithVers'.o Make macros AR and RANLIB are now declared in etc/Makeconf foruse by packages which wish to make static libraries.C-LEVEL FACILITIESo qgamma and rgamma in Rmath.h now check for non-positive arguments.o The BLAS which ships with R now contains the complete set ofdouble-complex BLAS routines, rather than just those used in R.<R_ext/BLAS.h> has been corrected to add the missingdouble-precision BLAS functions drotmg and drotm, and toexclude lsame (which is a Lapack auxiliary function and is nowdeclared in <R_ext/Lapack.h>). It also includes the doublecomplex routines added for this release of R provided Fortrandoublecomplex is usable on the platform.o <R_ext/BLAS.h> and <R_ext/Lapack.h> now declare all the entrypoints as 'extern'.o The flag SAFE_FFLAGS is made available to packages viaetc/Makeconf and R CMD config. It can be used whereoptimization needs to be defeated, e.g. in LAPACK setup.o getNativeSymbolInfo has a withRegistrationInfo argument whichcauses the address field to be a reference to the registrationinformation if it is available for that symbol. If theregistration information is not available, the address is areference to the native symbol. The default is FALSE which isbackward compatible, returning just the address of the symboland ignoring registration information.o errorcall and warningcall are now declared in <Rinternals.h>(they might be needed in front-ends).o R_FlushConsole and R_ProcessEvents are now declared in <R.h>.o The R_Sock* functions supporting socket connections are nolonger declared in R-ftp-http.h as they are not loaded into Ritself, and are now hidden in the module's DLL on suitable systems.BUG FIXESo Quoted arguments to the R script after --args are nowpassed quoted to the R executable and so will be shown asexpected by commandArgs(). (They were previously split atwhitespace even inside quotes on Unix-alikes but not onWindows.)o axis() now supports pars 'xaxp'/'yaxp' as inline arguments.o sort() now does not return inappropriate attributes such as"dim" and "tsp": it only returns names.sort(x, partial=) no longer returns unsorted names, and dropsnames (since it is supplied for efficiency).o Use of non-central F in pf() gives accurate values for larger ncp.o R CMD build --binary does a better job of cleaning up afterfailure to re-make vignettes.o reg-test-1.R tested system(intern=TRUE) which depends on popenand so is not supported on all platforms.o Changed apparent mis-spelling of "Gibraltar" in dataset 'eurodist'.o sysconf() is now used to find the number of clock ticks/second:under some circumstances glibc reported CLK_TCK = 60 when thetrue value was 100.o identical() was not allowing for embedded nuls in characterstrings. (NB: the comparison operators including == do not,and never will.)o The profile() and profiler() methods for "nls" objects nowsupport algorithm = "plinear" and algorithm = "port".o The signal handlers for signals USR1 and USR2 where notrestored if the signal arrived when interrupts were suspended.o Certain combinations of S4 inheritance could cause inheritedmethods to override some directly specified methods.o Some cases of named signatures in calls to setMethod() caused errors.o all.equal() is now more consistent and "picky" about mismatchingattributes, in particular names(); this is a part of thepropositions by Andy Piskorkski (PR#8191).o load() when applied to a connection leaves it open/not as itfound it, and checks explicitly for having a binary readableconnection.o The p-values given by stat.anova() (called from severalanova() methods) are now NA (rather than spurious) ifnon-nested models give rise to changes in deviance with adifferent sign from changes in degrees of freedom.o Built-ins were reported as the relevant call in C-level error()siff R profiling was in progress. Now they are never reported.o Too-long signatures (with no names) were not being caughtin setMethod().o Slot names in prototype() are being more thoroughly checked.o signif() is more likely to follow the 'round to even' rule forexactly representable numbers, e.g. signif(0.25, 1). (Relatedto PR#8452.)o nls() now works correctly with some low-dimensional fits,e.g. with one or zero non-linear parameters.o glm() could give an inappropriate error message if allpossible coefficients were invalid (e.g. a log-linear binomialmodel with no intercept and a not all positive predictor).o solve() gives clearer error messages for some incorrect usages.(PR#8494 and similar)o The gaussian() family was missing the 'valideta' component(which could be needed for the "inverse" link function).The starting values supplied by the gaussian family could beinvalid for the "log" and "inverse" link functions. This isnow reported.o data.matrix() did not work correctly on zero-row data frames.(PR#8496 and other problems.)o The DSC comments in the files from postscript(onefile=FALSE) nowlabel all files as having page 1 of 1, as some other softwareseems to expect that.o The axis labels chosen for logarithmic axis are now lesslikely to be linear and inappropriate (when the range is morethan 10 and less than 100). (PR#1235)o Staircase lines (types "s" and "S") are now drawncontinuously rather than a point at a time and so line types,mitring and so on work. (PR#2630)o Calling par(mfg) before doing any plotting resulted in NewPagenever being called on the device, which in turn resulted inincorrect output for postcript() and pdf() devices. (Reportedby Marc Schwartz in discussion of the non-bug PR#7820.)o terms.formula needed to add parentheses to formulae withterms containing '|'. (PR#8462)o pbirthday() and qbirthday() now also work for very improbableevents {those you are typically *not* interested in}.o Only source help files starting with an upper- or lower-caseletter or digit and extension .Rd or .rd are documented to beprocessed. This is more liberal in that starting with a digitis now also allowed, but rule is now enforced.o nls(algorthm="port") was always taking positive numericdifferences and so could exceed the upper bounds.o methods:::.asEnvironmentPackage() was not allowing forversioned installs.o .find.package() now reports which package(s) it cannot find inthe case it stops with an error.o The standard Unix-alike version of file.show() gives aninformative message if it cannot open a file rather than the(possibly incorrect) 'NO FILE'.o window() did not allow non-overlapping ranges withextend = TRUE. (PR#8545)o pbinom(size = 0) now returns correct values (not NaN). (PR#8560)o [dp]binom(x, *) for x < 0 now always returns 0. (PR#8700)analogous change in pgeom(), pnbinom() and ppois().o [dqpr]geom and [dpqr]nbinom() now all consistently accept prob = 1but not prob = 0. qgeom(prob=1) now gives the correct values(not -1).o INSTALL on Unix-alikes was not loading dependent packages whenpreparing for lazy-loading.o qcauchy(1) now gives +Inf instead of just a very large number.o df(0, f1, *) now properly returns Inf, 1, or 0 for f1 < , = , or > 2.o qbinom(), qnbinom() and qpois() now use a better search andnormally reach the answer very quickly when it is large(instead of being slow or infinite-looping).o pt(x, df) lost accuracy in the far tails (when |x| > 1e154) forsmall df (like df = 0.001 for which such extremes are not unlikely).o dbeta(x, a, b) underflowed internally and incorrectly gave 0for very small x and a.o None of the warnings about convergence failures or loss ofprecision in nmath (distribution and special functions) werebeing reported to the R user.o dnt was missing from standalone nmath (under Unix-alikes).o split() now accepts factors with numeric (but not storage modeinteger) codes.o The utilities such as 'check' now report active version numbersagain, as SVN 'last changed revision' numbers.o addmargins() did not accept a name for 'FUN', only an expression.o '+' for POSIXt objects now takes the tzone from whicheverobject has it, so date+x is the same as x+date if x is numeric.o mean.default() and var() compute means with an additional passand so are often more accurate, e.g. the variance of aconstant vector is (almost) always zero and the mean of such avector will be equal to the constant value to machineprecision. (PR#1228)sum(), prod(), mean(), rowSums() and friends use a long doubleaccumulator where available and so may be more accurate. (Thisis particularly helpful on systems such as Sparc and AMD64where long double gives considerably greater exponent rangeand precision than double.)o read.dcf() now gives a warning on malformed lines.o add1.[g]lm now try harder to use the environment of theformula in the orginal fit to look for objects such as the'data' and 'subset' arguments.o gaussian()$aic was inconsistent with e.g. the lm results fromAIC() and extractAIC() for weighted fits: it treated the weightsas case weights and not variance factors.o system() on Unix-alikes ignored non-logical values of 'intern' andtreated 'intern = NA' as true.o as.table() now produces non-NA rownames when converting amatrix of more than 26 rows. (PR#8652)o Partial sorting used an algorithm that was intended only for afew values of 'partial' and so could be far slower than a fullsort. It now switches to a barebones full sort for more than10 values of 'partial' and uses a more efficient recursiveimplementation for 2...10.o summary.glm() returned an estimate of dispersion of Inf for agaussian glm with zero residual degrees of freedom and thentreated that as a known value. It now uses the estimate NaN,which is consistent with summary.lm().o Sys.sleep() on Unix-alikes was restricted to about 2147 secondsand otherwise might never have returned. (PR#8678)o is(obj, Cl) could wrongly report TRUE when Cl was a classUnion andmultiple inheritance was involved.o confint[.lm / .default] used label "100 %" for level = 0.999o Empty entries (i.e., extraneous ",") in NAMESPACE files now givea better error message early at parsing time instead of a lesscomprehensible one later at load time.o all.equal(n1, n2) could erroneously return NA when n1, n2contained large integers.o anova.mlm() didn't handle multi-df effects properly in thesingle-model case (PR#8679)o anova.mlm() had its colnames mangled by data.frame() (neededcheck.names=FALSE).o summary.glm() gave an NA estimate of dispersion for fits withzero weights. (PR#8720)o qhyper() had too small a tolerance for right-continuity onsome platforms so was not always an inverse to phyper().o rownames<-.data.frame() and dimnames<-.data.frame() tested thelength(s) of the replacement value(s) before coercion, whichcan change the length (e.g. for class "POSIXlt").o max() and min() ignored the largest/smallest representableinteger, as well as Inf/-Inf. (PR#8731)o write.table() assumed factors had integer codes: it now allowsmalformed factors with numeric codes (and otherwise throws anerror).o Worked around a Solaris restriction which meant thatSys.sleep() was only effective for times of up to one second.o sink(, split=TRUE) now works correctly, but is allowed only onplatforms that support va_copy or __va_copy. (PR#8716)o factanal(), prcomp() and princomp() now only check that columnsin the model frame that will be used are numeric (theypreviously also checked columns which were part of negative termsin the formula).o Misuse of $ in apply could corrupt memory. (PR#8718)o apply() could fail if the function returned NULL (e.g. ifthere was a single row).o registerS3method() failed due to a typo. (It was almost neverused.)o Registering an S3 method for an S3 generic in another packagethat was converted to an S4 generic in the same package as theS3 method, registered the method in the wrong place.o Recall() used lookup for the function in use and so could failif that was an S3 method not on the search path.o Rdconv -t Ssgm failed if it encountered \link[opt]{arg}.o uniroot() did not give a warning (as documented) if it failedto converge in 'maxiter' steps. (PR#8751)o eapply() (and as.list.environment()) did not work for the baseenvironment/name space. (PR#8761)o Added protection in configure against systems for which usingxmkmf fails to report a C or C++ compiler.o expand.grid() was constructing a data frame 'by hand' and sosetting integer row.names (which are documented to becharacter). It now sets character row names, androw.names.data.frame() coerces to character.o qbeta() used == on volatile doubles for its convergence test,which failed with gcc 3.3.x on ix86 Linux. We now use a lessfragile test (and lose a negligible amount of accuracy).o ls.str() was missing inherits=FALSE, and so could havereported on an object of the same name but a different mode inthe enclosure of the given environment.o logLik.nls assumed that sigma^2 had been estimated, but didnot count this in the 'df' attribute.*************************************************** ** 2.2 SERIES NEWS ** ***************************************************CHANGES IN R VERSION 2.2.1 patchedINSTALLATION CHANGESo The macro SOCKLEN_T has been replaced by R_SOCKLEN_T to workaround a problem with the headers of AIX 5.3.BUG FIXESo sub(fixed = TRUE) could get wrong the length of the characterstring for elements of the result after the first.o legend() worked out which elements of 'lty' were valid beforeresizing 'lty', and so could fail if 'lty' was a differentlength from 'legend'.o str(<dendrogram>) sometimes used much too many spaces (in 2.2.x).o eigen(eispack=TRUE) accessed areas off the matrix in somecircumstances (some asymmetric matrices with both complexconjugate pair and real eigenvalues).o strptime() in 2.2.1 sometimes did not set $isdst when it waspreviously set.o Another case of infinite influence has been worked around.(An addendum to PR#8367.)o qr.coef() worked incorrectly with multiple rhs in theLAPACK-using cases. (PR#8476/8)o rbind.data.frame() gave a corrupt data frame if one of thenamed arguments was a zero-row data frame. (PR#8506)o Checks for NULL in the rho argument of the C-level findVarfunction have been added.o The C-level substitute function was handling NULL in its 'rho'argument incorrectly.o The code for pgamma() introduced in 2.1.0 failed for largevalues of 'shape' where the previous code was perfectlyacceptable, despite the claim to be uniformly better. Forexample, pgamma(0.9e100, 1e100) was NaN. (PR#8528)o There was no command 'ls' in browser() nor 'next' in debug(),despite the documentation (which has been corrected).Command 'where' in the browser() no longer changes tostep-though mode.o factor.scope() could report incorrectly that interaction termswere not in the upper scope when such terms in the model andthe upper scope had different orders for the main effects.(Another manifestation of PR#7842.)o The "lm" method of drop1() was giving incorrect results forweighted fits (since deviance.lm() was called on a non-"lm" object).o dotchart() was miscalculating the space for the labels in theleft margin. (PR#8681)o r <- glm(.....); all.equal(r,r) # now gives TRUE instead of an erroro plot.acf() with a multiple time series was sometimesmiscalculating the 'ylim' value for the plot after the first.(PR#8705)CHANGES IN R VERSION 2.2.1USER-VISIBLE CHANGESo options("expressions") has been reduced to 1000: the limitof 5000 introduced in 2.1.0 was liable to give crashes from Cstack overflow.NEW FEATURESo Use of 'pch' (e.g. in points) in the symbol font 5 is nowinterpreted in the single-byte encoding used by that font.Similarly, strwidth now recognizes that font 5 has a differentencoding from that of the locale. (These are likely to affectthe answer only in MBCS locales such as UTF-8.)o The URW font metrics have been updated to versions from late2002 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 Groupcompilers on ix86 and x86_64 Linux.o R CMD INSTALL will clean up if interrupted (e.g. by ctrl-C fromthe keyboard).o There is now a comprehensive French translation of the messages,thanks to Philippe Grosjean, Frederic Lehobey, Jean Thioulouseand Emmanuel Paradis.DEPRECATED & DEFUNCTo 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 FIXESo The malloc's of AIX and OSF/1 which return NULL for size 0are now catered for in src/main/regex.c.o Names of list elements which are missing are now printed as$<NA> and not $"NA" (which is how the non-missing name "NA" isprinted). (Brought up in discussion of PR#8161.)o help.start() was not linking R.css for use by its front page andimmediate 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, soit could fail very occasionally.o arima() with 'fixed' supplied and p=0 for the non-seasonalpart could give spurious warnings about 'some AR parameterswere fixed'.o summary.matrix() could give an infinite recursion on someclassed objects (e.g. those of class "Surv").o The 255th character in an 8-bit character set was not handledcorrectly as a letter on some platforms where C char issigned: for example it was printed as \377 and not allowed invariable names. (Spotted by Alexey Shipunov in Russianencodings.)o Conversion from POSIXct to POSIXlt is done more accuratelyaround the change of DST in years not supported by the OS(pre-1970 on Windows and some others, and in the far past orfuture).o chisq.test(cbind(1:0, c(7,16)), simulate.p = TRUE) gave wrongP-values on some platforms. (PR#8224)o pdf() was not writing details of the encoding to the filecorrectly. (Spotted by Alexey Shipunov in Russian encodings.)o image() was failing with an error when plotting a matrixof all NA values. (PR#8228)image() could fail if called with add=FALSE (the default) andlength(x)=1 for either x or y, as it uses the plot coordinates ofthe previous plot (if any).o tools::checkMD5sums was not accepting file names with spaces in.o The plot() method for TukeyHSD() needed updating after addingadjusted 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 aUTF-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 theregistration mechanism has been used.o ISODateTime() mistakenly corrected non-existent times (whenDST was being started) in the current time zone.o Some replacement operations on data frames gave incorrectanswers, e.g. DF[3:4, "y"] if column "y" did not exist or wasa matrix.o getGraphicsEvent() would cause memory corruption if passed anempty prompt.o qr() and chol() now pivot the colnames of the result whenpivoting is used. (PR#8258)o example(points) omitted pch=0, although it was valid andsaid in the text to be illustrated.o plot.default() had an unused 'lab' argument, thereby preventingthe 'lab' graphics parameter being passed through '...' .o Although polygon(col = NA) was the stated default, specifyingNA was not equivalent to omitting the argument (but col=NULLwas equivalent).o Im(-1) was pi. (PR#8272, a side effect from all previousversions of R returning the same value for Im and Arg ofnon-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 49bytes) and so could segfault.o aggregate.ts() did not allow for rounding in frequencies suchas 1/5.o prcomp(tol=) was not dropping the sdev's corresponding todropped columns.o Subassignment of a vector which increased the length of thevector _and_ had the wrong length of replacement couldoccasionally segfault. (This has been there since at leastmid 1997.)o The registration of .Fortran symbols was broken: these couldonly be looked up if there were also .Call symbols registered!o R CMD build was incorrectly rejecting the recommended form ofname for a translation package, 'Translation-ll'. (PR#8314)o numericDeriv() gave nonsense results unless the variables werereal, which was not checked.o predict.prcomp() would sometimes give an error when predictinga 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 wasless than .Machine$double.eps but non-zero.o qbinom() was not accepting p = -Inf when log.p = TRUE, althoughit is a legitimate value.o write.csv[2] only accepted logical constants for 'row.names', andnow accepts variables.o Conversion of .Rd files did not correctly match bracesenclosing a whole argument, e.g. \eqn{{\bf a}}{a}.o The C function pythag (used if hypot was not available) wouldinfinite-loop on systems with effective optimizing compilers.o Writing long formats (more than 1000 bytes) with connectionsthat use dummy_vfprintf could fail on some systems. The limithas been changed to 100000 bytes pending a more complete fix in R2.3.0.o Making in src/nmath/standalone without making R was notmaking Rmath.h.o Both the R front-end and INSTALL could find the attemptedtemporary directory name already in use on platforms withoutmktemp (and a genuine Bourne shell /bin/sh, not bash). Nowboth the process ID and a timestamp are used to create thedirectory name.o [dpqr]gamma now return NaN for an invalid 'shape' parameter(rather than throw an error), for consistency with otherdistribution 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 whichwas fitted exactly. Similarly, plot.lm() could fail on suchexamples. plot.lm(which = 5) had to be modified to only plotcases with hat < 1. (PR#8367)lm.influence() was incorrectly reporting 'coefficients' and'sigma' as NaN for cases with hat = 1, and on some platformsnot 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 thepath, 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 mightprefer 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.CHANGES IN R VERSION 2.2.0USER-VISIBLE CHANGESo plot(<lm object>) 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 thewelcome message. The date shown is now the date of the lastchange to the sources rather than the date the sources wereprepared.o is.null(expression()) now returns FALSE. Only NULL gives TRUEin is.null().o graphics::xy.coords, xyz.coords and n2mfrow have been moved tothe grDevices name space (to be available for grid as well).graphics::boxplot.stats, contourLines, nclass.*, and chullhave been moved to the grDevices name space. The C codeunderlying chull() has been moved to package grDevices.o split(x, f), split<-() and unsplit() now by default split by alllevels of a factor f, even when some are empty.Use split(x, f, drop = TRUE) if you want the old behavior ofdropping empty levels. split() and split<-() are S3 genericfunctions with new arguments 'drop' and '...' and all methods nowshould 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 FEATURESo .Platform has a new component 'path.sep', the separator usedbetween 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() andas.integer() on all platforms, and as integer constants in R code.o attach() now prints an information message when objects aremasked 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 horizontaladjustment 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. Thisis 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 willallow 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 densityplots and spine plots or spinograms. Spine plots are now usedinstead of bar plots for x-y scatterplots where y is a factor.o checkDocFiles() in package 'tools' now checks for bad \usagelines (syntactically invalid R code).o The nonparametric variants of cor.test() now behave better inthe presence of ties. The "spearman" method uses the asymptoticapproximation in that case, and the "kendall" method likewise,but adds a correction for ties (this is not necessary in theSpearman 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() {formerdensity()} has new argument 'weights' for specifying observationmasses different than the default 1/N -- based on a suggestion andcode from Adrian Baddeley.o download.packages() now carries on if it encounters a downloaderror (e.g. a repository with a corrupt index).o dump() now skips missing objects with a warning rather thanthrow an error.o Added "POSIXlt" methods for duplicated() and unique().o Function encoded_text_to_latex() in package tools translatesLatin 1,2,9 and UTF-8 encoded character vectors to LaTeXescape sequences where appropriate.o encodeString() allows justify = "none" for consistency withformat.default(). Some argument names have been lengthenedfor clarity.o file(), fifo() and pipe() now (if possible) report a reasonif they fail to open a connection.o format.default() now has a 'width' argument, and 'justify' cannow centre character strings.format.default() has new arguments 'na.encode' to controlwhether NA character strings are encoded (true by default),and 'scientific' to control the use of fixed/scientificnotation for real/complex numbers.How format() works on a list is now documented, and usesarguments consistently with their usage on an atomic vector.o format.info() now has a 'digits' argument, and is documentedto work for all atomic vectors (it used to work for all butraw 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 (notjust 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 argumentfast=FALSE to prevent their arguments being modified.o Exact p-values are available in ks.test() for the one-sided andtwo-sided one-sample Kolmogorov-Smirnov tests.o labels() now has a method for "dist" objects (replacing thatfor names() which was withdrawn in 2.1.0).o library() now explicitly checks for the existence ofdirectories in 'lib.loc': this avoids some warning messages.o loadNamespace(keep.source=) now applies only to that name spaceand not others it might load to satisfy imports: this is nowconsistent with library().o match.arg() has a new argument 'several.ok = FALSE'.o max.col() has a new argument for non-random behavior in thecase 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 anon-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 thePort library on netlib) added to the nls() function in the'stats' package.o object.size() now supports more types, including externalpointers and weak references.o options() now returns its result in alphabetical order, and isdocumented more comprehensively and accurately. (Now alloptions used in base R are documented, includingplatform-specific ones.)Some options are now set in the package which makes use ofthem (grDevices, stats or utils) if not already set when thepackage 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, currentlyonly 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), plottingresiduals or cook distances versus (transformed) leverages - unlessthese are constant. Further, the new argument 'add.smooth' adds aloess 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 asfilenames 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 fasteralgorithm if there are many reasonably probable values. (Thisdoes mean the results will be different from earlier versionsof R.) The speedup is modest unless 'x' is very large _and_'prob' is very diffuse so that thousands of distinct valueswill be generated with an appreciable frequency.o scatter.smooth() now works a bit more like other plottingfunctions (e.g., accepts a data frame for argument 'x').Improvements suggested by Kevin Wright.o signif() on complex numbers now rounds jointly to give therequested number of digits in the larger component, notindependently for each component.o New generic function simulate() in the 'stats' package withmethods for some classes of fitted models.o smooth.spline() has a new argument 'keep.data' which allows toprovide residuals() and fitted() methods for smoothing splines.o Attempting source(file, chdir=TRUE) with a URL or connectionfor 'file' now gives a warning and ignores 'chdir'.o source() closes its input file after parsing it rather thanafter executing the commands, as used to happen prior to2.1.0. (This is probably only significant on Windows wherethe 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 precisionspecification (but not both) as well as `*1$' to `*99$'. Also thehandling of `%' as conversion specification terminator is nowleft to the system and doesn't affect following specifications.o The plot method for stl() now allows the colour of the rangebars to be set (default unchanged at "light gray").o Added tclServiceMode() function to the tcltk package to allowupdating to be suspended.o terms.formula() no longer allows '.' in a formula unless thereis a (non-empty) 'data' argument or 'allowDotAsName = TRUE' issupplied. We have found several cases where 'data' had notbeen passed down to terms() and so '.' was interpreted as asingle variable leading to incorrect results.o New functions trans3d(), the 3D -> 2D utility from persp()'sexample, 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 usewith file:// URLs. These are used by e.g. browse.env(),download.file(), download.packages() and various help() printmethods.o Functions utf8ToInt() and intToUtf8() to work with UTF-8encoded character strings (irrespective of locale or OS-levelUTF-8 support).o [dqp]wilcox and wilcox.test work better with one very large samplesize 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 processingRenviron files is more liberal: see ?Startup. It nowaccepts forms like R_LIBS=${HOME}/Rlibrary:${WORKGRP}/R/lib .o Added recommendation that packages have an overview man page<pkg>-package.Rd, and the promptPackage() function to create askeleton version.o Replacement indexing of a data frame by a logical matrix indexcontaining NAs is allowed in a few more cases, in particularalways when the replacement value has length one.o Conversion of .Rd files to latex now handles encoding morecomprehensively, 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 somewhatfaster, 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 wheresupported. This is likely to boost performance, but issubject to the accuracy with which it has been implemented.o The printing of complex numbers has changed, handling numbersas a whole rather than in two parts. So both real andimaginary parts are shown to the same accuracy, with the'digits' parameter referring to the accuracy of the largercomponent, and both components are shown in fixed orscientific notation (unless one is entirely zero when it isalways 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 morethan 5000 years away from 1970-01-01 (by making dubiousassumptions about the calendar in use).o There is now a traditional Chinese translation, and a much moreextensive Russian translation.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'.o write.table0() is deprecated in favour of the much fasterwrite.table().o format.char() is deprecated in favour of format.default().o R_HOME/etc/Rprofile is no longer looked for ifR_HOME/etc/Rprofile.site does not exist. (This has beenundocumented 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 sinceR 1.7.0) has been removed.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.o We now test for wctrans_t, as apparently some broken OSes havewctrans but not wctrans_t (which is required by the relevantstandards) .o Any external BLAS found is now tested to see if the complexroutine zdotu works correctly: this provides a compatibilitytest of compiler return conventions.o Installation without NLS is now cleaner, and does not installany message catalogues.o src/modules/lapack/dlamc.f is now compiled with -ffloat-storeif f2c/gcc are used, as well as if g77 is used.o All the Fortran code has been checked to be fully F77compliant so there are no longer any warnings from F95compilers such as gfortran.o The (not-recommended) options --with-system-zlib,--with-system-bzlib and -with-system-pcre now have 'system' inthe name.o If a Java runtime environment is detected at configure timeits 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 availablein Makeconf.o Ei-ji Nakama was contributed a patch for FPU control with theIntel compilers on ix86 Linux.MAC OS X INSTALLATIONo --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 containthe patch level (i.e. it is now 2.2 instead of 2.2.0). Alsoit can be overridden at configure time by setting FW_VERSIONto the desired name.o The Rmath stand-alone library is now correctly installed insidethe R.framework if R was configured as a framework. Inaddition, make install-Rmath-framework will install astand-alone Rmath framework in /Library/Frameworks (unlessoverridden by RMATH_FRAMEWORK_DIR specifying full frameworkpath and name including the .framework extension).PACKAGE INSTALLATIONo 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.o available.packages() will read a compressed PACKAGES.gz file inpreference to PACKAGES if available on the repository: thiswill reduce considerably the download time on a dialup connection.The downloaded information about a repository is cached for thecurrent R session.o The information about library trees found byinstalled.packages() is cached for the current session, andupdated only if the modification date of the top-leveldirectory has been changed.o A data index is now installed for a package with a 'data' dirbut no 'man' dir (even though it will have undocumented data objects).o contrib.url path for type="mac.binary" has changed frombin/macosx/<version> to bin/macosx/<arch>/contrib/<version>where <arch> corresponds to R.version$archUTILITIESo checkFF() used by R CMD check has since R 2.0.0 not reportedmissing PACKAGE arguments when testing installed packages withname spaces. It now- treats installed and source packages in the same way.- reports missing arguments unless they are in a function inthe name space with a useDynLib declaration (as theappropriate DLL for such calls can be searched for).o Rd2dvi sets the encoding(s) used appropriately. If UTF-8encoding is used, latex >= 2003/12/01 is required.o codoc() allows help files named pkg_name-defunct.Rd to haveundocumented arguments (and not just base-defunct.Rd).C-LEVEL FACILITIESo 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 apackage argument now searches for an enclosing name space andso finds functions defined within functions in a name space.o R_max_col() has new (5th) argument '*ties_meth' allowingnon-random behavior in the case of ties.o The header files have been rationalized: the BLAS routineLSAME is now declared in BLAS.h not Linpack.h, Applic.h nolonger duplicates routines from Linpack.h, and Applic.h isdivided into API and non-API sections.o memory.c has been instrumented so that Valgrind can track R'sinternal memory management. To use this, configure using--with-valgrind-instrumentation=levelwhere level is 1 or 2. Both levels will find more bugs withgctorture(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 ina future release.BUG FIXESo %/% 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.o as.function.default() no longer asks for a bug report whengiven 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 Windowsgraphics device. Line widths also scale now.o Plotmath has more support for multibyte characters (contributedby Ei-ji Nakama).o The X11() device now hints the window manager so that decorationsappear reliably under e.g. the GNOME WM (contributedby Ei-ji Nakama).o Subsetting a matrix or an array as a vector used to attempt touse the row names to name the result, even though thearray might be longer than the row names. Now this is onlydone for 1D arrays when it is done in all cases, even matrixindexing. (Tidies up after the fix to PR#937.)o Constants in mathlib are declared 'const static double' toavoid performance issues with the Intel Itanium compiler.o The parser checks the format of numeric constants morethoroughly so for example '123E-' is no longer valid.o contourLines() no longer requires an open device (used tostart a device unnecessarily). Fix suggested by Barry Rowlingson.o capabilities() used partial matching but was not documentedto: it no longer does so.o kernel(1,0) printed wrongly; kernel(<name-string>, *) now returnsa 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 alwaysreturn a matrix as documented, possibly with 0 rows (rather thana 0-length character vector or NULL).o Arithmetic operations on data frames no longer coerce thenames to syntatically valid names.o Units are now properly recycled in grid layoutswhen 'widths' or 'heights' are shorter than the number ofcolumns or rows (PR#8014).o DF <- data.frame(A=1:2, B=3:4); DF[1, 1:3] <- NULL gave a wrongerror message.o spline()/spinefun()'s C code had a memory access buglet whichnever 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 miscalculatestandard errors (PR#7956). Reported by Benjamin Tyner, fixedby Berwin Turlach.o library(keep.source=) was ignored if the package had aname space (the setting of options("keep.source.pkgs") wasalways 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 bythe par(family=) approach introduced in 2.0.0. This bug-fixjust updates the warning messages and documentation toproperly reflect the new order of things.o The C-level function PrintGenericVector could overflow ifasked to print a length-1 character vector of several thousandcharacters. 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 wasincorrectly documented. (They both exist but throw an error.)Further, systen.time() would give an error in its on.exitexpression.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 andoffset from the original fit, and so gave errors in the(dubious) usage where the upper scope resulted in a smallernumber of cases to fit (e.g. by omitting missing values in newvariables). (PR#8049)o demo() had a 'device' argument that did nothing (although itwas documented to): it has been removed.o Setting new levels on a factor dropped all existingattributes, including class "ordered".o format.default(justify="none") now by default converts NAcharacter 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 ornon-printable characters).o axis() now ensures that if 'labels' are supplied as characterstrings or expressions then 'at' is also supplied (since thecalculated value for 'at' can change under resizing).o Defining S4 methods for "[" had resulted in changed behavior of S3dispatch in a very rare case which no longer happens.o Fixed segfault when PostScript font loading fails, e.g., whenR is unable to find afm files (reported by Ivo Welch).o R CMD BATCH <file> now also works when <file> does not end in anewline on Unix-alike platforms.o terms.formula() got confused if the 'data' argument was a list withnon-syntactic names.o prompt() and hence package.skeleton() now produce *.Rd files thatgive 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 thanachievable, preventing errors (PR#3666) and incorrect answerswith 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 tomatch 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 chunkagainst conversion to guillemets.o callNextMethod() and callGeneric() have fixes related tohandling arguments.o ls.diag() now works for fits with missing data. (PR#8139)o window.default() had an incorrect tolerance and so sometimescreated too short a series if 'start' or 'end' were zero.o Some (fairly pointless) cases of reshape left atemporary 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 inthe tarball).o Subassignment of length zero vectors to NULL gave garbageanswers. (PR#8157)o Automatic coercion of raw vectors to lists was missing, so for alist (or data frame) z, z[["a"]] <- raw_vector did not workand now does. This also affected DF$a <- raw_vector for adata 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 unsuccessfulinstall of a non-bundle which was not already installed.*************************************************** ** 2.1 SERIES NEWS ** ***************************************************CHANGES IN R VERSION 2.1.1 patchedBUG FIXESo runmed(x, k = -1) now gives an error instead of a seg.fault.o File creation errors in pdf(), postscript(), xfig() resultedin a pointer being freed twice. (Reported by Matt McCall)o model.matrix(~ .^2, data=foo) now works as most people wouldexpect (it used to expand '.' after using the a^2 = a rule).o ftable() and xtabs() had a check for interactions that wouldnot work correctly with '.' in the formula.o The formula method for pairs() was ignoring the na.action argument.o scan() with the default separator (only) was stripping backslashesinside quoted string inputs even if allowEscapes = FALSE.o The "col" parameter to pairs() is now treated consistently withplot(): it affects the data, not the axes. (Patch submittedby Olaf Mersmann)o Sweave failed for \Sexpr{character(0)}. Sweave-test-1.Rnwcontained a print() statement that is no longer needed.o Typo meant that R_alloc was limited to 2^31 not 2^34 on 64-bitbuilds of R.o pgamma(Inf, shape) did not terminate for shape = 1.1 and someother values (but not all) (PR#8001). This affectedpchisq(Inf, df1) and pf(Inf, df1, Inf) for some values of df1.o regexpr("[a-z]", ...) could cause a buffer overrun with multi-bytecharacter sets, leading to random errors later.o Installing a package with a 'data' directory which containsfiles but those files generate no objects (e.g. the BioCpackage makecdfenv) created an incorrectly formatted dataindex that data(package="pkg") could not read.o density(1/(0:2)) now works again (PR#8033).o make.names() was not respecting the allow_=FALSE argument.o Arg(-1) now gives pi, not 0; Arg(0i + -1) always worked.o --enable-linux-lfs had been broken at 2.1.0.o Printing was not allowing for double-width characters in itslayout.o axTicks() is now also correct for reverse axis. (PR#7973)o signif() rounded some numnbers near 1e-308 to the wrongnumber of places (this showed up in the print-tests.R), and madeunnecessary rounding errors on some platforms on e.g. signif(18000, 3).o window() was sometimes failing incorrectly due to representationerrors when the new and old deltat were not both integers(e.g. multiples of 0.1).o The 'lm' methods for add1() and drop1() ignored offsets (whichwere added for lm() after they written). (PR#8049)o atan2(0+1i, 0+0i) was incorrectly NA (from a typo in complex.c).o The POSIXct method for as.Date() was rounding part daysbefore 1970-01-01 upwards rather than discarding them.o qpois() was using an incorrect starting point and so could beunnecessarily slow for large lambda. (PR#8058)o Formatting of complex numbers with nsmall > 0 could beincorrect (and was in print-tests.Rout) because of a typo.o The test for new levels when predicting using model.frame()sometimes reported levels that were not actually used.o order(c("5","6",NA,"4",NA), na.last=FALSE) was incorrect.o Coercion to raw could give spurious messages about discardingimaginary parts.Coercion of a list to raw was behaving inconsistently forout-of-range values (and not warning).o cor.test(method = "spearman") gave NA p-values for _very_ longvectors. (PR#8087)o Switching to the Mersenne-Twister RNG could cause a segfault onfirst use.A user-supplied RNG without user_unif_{nseed,seedloc} wasbeing re-initialized at each call.o Reading very short tables from stdin() with read.table wouldfail because of a typo.CHANGES IN R VERSION 2.1.1NEW 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=).o There has been progress on translations: existing translationshave been revised and expanded, and French and Korean havebeen added.The Windows installer supports a wide range of languages forinstallation.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 anova.mlm had a scoping issue (PR#7898)o pf() with infinite df is allowed again. It is now more accuratefor 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 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 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)o truncate() on file() connections was limited to files < 2Gb. Itnow works for larger files at least on 64-bit OSes and otherswhere ftruncate supports such files. (Related to PR#7879)o proj.aovlist() did not work correctly on objects fitted from adata frame with row names.o The coding standards recommendations hadnuke-trailing-whitespace where newer versions of ESS needess-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)) {reversedlog-scale axis} now works, based on Uwe Ligges' suggestions.(PR#7894)o install.packages() was aborting when a package in a bundle waschosen from a menu. It failed if more than one package in abundle 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 toits description and has been changed. The mismatch causedsymbols in .C/.Call/.Fortran calls without a PACKAGE= argumentto be potentially looked up in the wrong name space.o Binary save() of raw vectors was not working correctly onbig-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 onconsoles with delayed printing.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 Ei-ji 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 fromname spaces; 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 name space 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.CHANGES IN R VERSION 2.0.0USER-VISIBLE CHANGESo The stub packages from 1.9.x have been removed: the library()function selects the new home for their code.o `Lazy loading' of R code has been implemented, and is used forthe standard and recommended packages by default. Rather thankeep R objects in memory, they are kept in a database on discand only loaded on first use. This accelerates startup (downto 40% of the time for 1.9.x) and reduces memory usage -- thelatter is probably unimportant of itself, but reducescommensurately the time spent in garbage collection.Packages are by default installed using lazy loading if theyhave more than 25Kb of R code and did not use a saved image.This can be overridden by INSTALL --[no-]lazy or via a fieldin the DESCRIPTION file. Note that as with --save, any otherpackages which are required must be already installed.As the lazy-loading databases will be consulted often, Rwill be slower if run from a slow network-mounted disc.o All the datasets formerly in packages 'base' and 'stats' havebeen moved to a new package 'datasets'. data() does theappropriate substitution, with a warning. However, calls todata() are not normally needed as the data objects are visiblein the 'datasets' package.Packages can be installed to make their data objects visiblevia R CMD INSTALL --lazy-data or via a field in theDESCRIPTION file.o Package 'graphics' has been split into 'grDevices' (the graphicsdevices shared between base and grid graphics) and 'graphics'(base graphics). Each of the 'graphics' and 'grid' packagesload 'grDevices' when they are attached. Note thatps.options() has been moved to grDevices and user hooks mayneed to be updated.o The semantics of data() have changed (and were incorrectlydocumented in recent releases) and the function has been movedto package 'utils'. Please read the help page carefully ifyou use the 'package' or 'lib.loc' arguments.data() now lists datasets, and not just names which data() accepts.o Dataset 'phones' has been renamed to 'WorldPhones'.o Datasets 'sunspot.month' and 'sunspot.year' are available********************************************************** ** News of 1.x.y is in file 'NEWS.1' ** **********************************************************%%% Local Variables:%%% mode: text%%% coding: utf-8%%% End: