The R Project SVN R

Rev

Rev 12307 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

                Dear Emacs, please make this -*-Text-*- mode!
    **************************************************
    *                        *
    *          1.2 SERIES NEWS           *
    *                        *
    **************************************************


        CHANGES IN R VERSION 1.2.2


BUG FIXES

    o   readBin() and writeBin() were not always making good use of
    long types (such as long double) when available.

    o   postscript() and xfig() devices now make use of genuine Adobe
    afm files, and warn if characters are used in string width or
    height calculations that are not in afm files.

    o   The C function fprec was not handling very small denormalized
    numbers correctly.  This affected the way they were printed on
    Windows, for example.

    o   legend() now draws points after lines allowing "empty dots on
    lines" thanks to Ben Bolker.

    o   Setting row/column names preserves the names of the dimnames
    (PR#809). 

    o   Using help() after help.start() on Unix was failing to find
    the linked help files if more than one package was loaded (as
    now happens by default).



        CHANGES IN R VERSION 1.2.1


NEW FEATURES

    o   New functions factanal(), varimax(), promax() and examples in
    package mva.

    o   New functions readBin() and writeBin() to transfer binary data
    to and from connections.

    o   merge() is partially moved to C to reduce its memory usage.

    o   library(help = PKG) now displays the contents of the package's
    DESCRIPTION file in addition to its INDEX.

    o   Sd2Rd can handle S4-style documentation too: see `Writing R
    Extensions'.

    o   prompt() now also works with a character argument (useful for
    producing many *.Rd files in a loop).

    o   The Unix front-end shell script now ignores a value for R_HOME
    found in the environment.

    o   Connections functions such as file() now accept a description of
    length > 1, with a warning.

    o   All text-mode connections now accept input with LF, CR or CRLF
    line endings.  This means that readLines() can be used on DOS
    files and source() on Mac files, for example.

    Also, CRLF-terminated files can be used as stdin on Unix, and
    files with last lines without an EOL mark can be used as stdin
    and source()-ed on Unix and Windows.

    o   DESCRIPTION file has a new recommended `Maintainer:' field.

    o   stars() now uses a larger "cex" for the labels, and cex and lwd
    are now arguments. Further, the argument names (xlim, ylim,
    axes) are now consistent with other plot functions.  The key symbol
    is not clipped anymore into the plot region by default.

    o   Date-time quantities are now printed with the timezone, if known.

    o   R CMD build now ignores all files specified (via Perl regexps)
    in file `.Rbuildignore' in the top-level source directory of a
    package.

    o   Horizontal boxplots are possible with  horizontal = TRUE.

    o   all.equal() on lists now compares them as generic vectors, that
    is they are equal if have identical names attributes and
    all components are equal.

    o   Invalid lines in .Renviron now give warnings when R is started.

    o   Argument `na.last' implemented for rank().


BUG FIXES

    o   There have been many small improvements/corrections in the
    documentation. In particular:

    The help pages for lm and glm now describe the fitted objects.

    is.vector() is now correctly documented: complex vectors and
    lists return TRUE.

    o   The default sortedXyData constructor in the nls package now
        handles missing values in the response.

    o   On startup, file .RData is now restored *after* the site and
    user profiles are loaded (if at all).  This is as previously
    documented.

    o   as.POSIXlt (and *ct) operating on a character string
    only extracted the date (and not the time) in some cases.

    o   as.POSIXct() on character objects was ignoring `tz'.

    o   codoc(ignore.generic.functions = TRUE) works again.

    o   Explicitly close files opened by sink() for OSes (such as
    Windows) that benefit from it.

    o   Prevent closing the sink connection (which would be a silly
    thing to do).

    o   showConnections(all = TRUE) was sometimes counting connections
    incorrectly, and so not showing some closed ones.

    o   ts(1:10, start= c(1999,6), end = c(2000,3), frequency = 12)
    now prints both years (as it should).

    o   Monthly multivariate time series now print proper month names
    in all cases.

    o   print.stl(), print.princomp() and print.prcomp() now pass on
    `digits =' etc.

    o   prompt() now produces a \usage{} line for data frames and
    other datasets, as documented in `Writing R Extensions'.

    o   glm() now returns correct linear predictor and fitted values
    for zero-weight cases.

    o   scan(strip.white=TRUE) and readline() could give incorrect
    answers when an input field was empty or blank.

    o   dchisq() now behaves better for large values of its ncp parameter.

    o   besselJ(*, nu) is now ok for nu < 1; fix improves accuracy of
    other values by a few bits as well.

    o   The convergence criterion in the Fortran SVD code has been
    changed to circumvent spurious convergence errors when
    comparing extended-precision quantities on ix86 Linux (and
    some compilers and options).

    o   Rdindex now handles multi-line \title{}'s correctly.

    o   Add weights.glm() so that plot.lm() gets the correct weights from
    glm objects (the ones that go with deviance residuals not the
    working residuals).

    o   Printing a language object (e.g. a formula) in a list was
    clobbering the buffer holding the tag labels which then were
    lost in subsequent lines of printout (PR#746).

    o   aic in family() objects is now computed more precisely using
    dxxxx(log=TRUE).  For binomial fits the value was wrong for
    models specified via proportions and weights (PR#796).

    Avoid NaN values in aic where n = 0 occurs.

    o   Using non-integer numbers of successes in a binomial glm (as
    formerly in demo(lm.glm)) now gives a warning, as the theory and
    in particular the AIC value is not applicable.

    o   demo(is.things) works again {is.ALL() doesn't call methods
    anymore}.

    o   persp(*, nticks = nn) now works (better) for too small nn.
    persp(*, main = t1, sub= t2) now work (as always documented).

    o   Printing of attributes of a list element no longer precedes
    `attr' by the tag (PR#715).

    o   It is no longer possible to use df[foo] to select non-existent
    columns in df and so create an invalid object of class
    "data.frame" (PR#698).

    o   edit.data.frame() was trying to set row.names on a list, which
    is no longer allowed.

    o   In the \link[pkg]{topic}, `pkg' was not being used if `topic'
    was found in a package in .lib.loc.  Now `pkg' is always used.

    o   plot() with small relative ranges gave an error, which e.g. broke
    library(ts); plot(stl(ts(rep(1:7, 15), freq = 7), s.win = "per"))

    o   Using scan() with a 0-length `what' argument now gives an error
    message rather than a segfault.

    o   Loading .Random.seed could extremely rarely and with some
    generators reject a value as NA_INTEGER when it was valid.

    o   save(..., ascii=TRUE) created broken files when saving strings
        containing special characters (ASCII code > 127).

    o   mean(c(1,NA,NA,NA)[-1], trim = .1, na.rm = TRUE) doesn't give an
    error anymore.

    o   As the supplied afm files are not properly in the ISOLatin1
    encoding, the font metric for "-" was wrong since 0.63 on a
    postscript/xfig device, and randomly wrong in 1.2.0.  It will
    now be correct (but the files remain incorrect: C45 is "minus"
    not "hyphen" and there are missing slots).

    Metrics for the duplicated characters (acute, dieresis,
    macron, space) in ISOLatin1 encoding are now correct for both
    occurrences: previously only one was present.

    o   The data-time functions try harder to guess the DST setting
    when the OS does not know, as some OSes were printing times
    in DST if this was marked as unknown.

    o   Setting par(pty=) after par(pin=) or par(plt=) was having no
    effect until the margins were set.

    o   Nested \describe sections in .Rd files have (again) nested
    indentation when converted to text.

    o   Concatenation of C strings by ## is no longer used, to avoid
    spurious warnings from some recent versions of gcc.

    o   dev.copy2eps() allows a `paper' argument to be passed to
    postscript().

    o   file.show() handles the case of zero files better.

    o   formula.lm uses object$formula if it exists, in preference 
    to object$terms.

    o   strsplit() is corrected for an empty split pattern.

    o   kronecker() now does a better job when creating dimnames.

    o   Better handling of input dimnames in fourfoldplot().



        CHANGES IN R VERSION 1.2.0


NEW FEATURES

    o   There is a new memory management system using a generational
    garbage collector.  This improves performance, sometimes
    marginally but sometimes by double or more.  The workspace is
    no longer statically sized and both the vector heap and the
    number of nodes can grow as needed.  (They can shrink again,
    but never below the initially allocated sizes.)  See ?Memory
    for a longer description, including the new command-line
    options to manage the settings.

    o   values of `--min-nsize' up to 50M (2Gb on 64-bit Solaris) are
    allowed.

    o   A (preliminary) version of S4-like connections has been added,
    and most functions which take a "file" argument can now work
    with a connection as well as a file name.  For more details,
    see the chapter on Connections in the R Data Import/Export
    manual.

    o   New command-line option `--no-restore-history' implied by
    `--vanilla'.

    o   Command-line option `--no-restore' is now `--no-restore-data'
    and `--no-restore' implies `--no-restore-*' (currently `data'
    and `history').

    o   The more recent GNU regex from grep-2.4.2 is used.  This uses
    locale-based ordering for ranges on platforms with strcoll.

    o   The print routines now escape " (as \") in a character string
    only when it is printed as a quoted string.  This makes
    print(, quote=FALSE) and cat() consistent.


    o   The standard methods for add1() and drop1() now attempt to cope
    with missing values by using a subset of the data that is
    `cleaned' by na.action for the maximal model under consideration.

    o   anova() for 3 or more lm objects now behaves compatibly with S
    and anova.glmlist().  The old behaviour is still available by
    calling anovalist.lm() directly.

    o   anova() for multiple lm and glm objects no longer truncates the
    formula printed. There is much more extensive documentation
    for anova() methods.

    o   New method as.data.frame.table() for converting the array-based
    representation of a contingency table to a data frame containing
    the classifying factors and the corresponding counts.

    o   New function assocplot() for producing Cohen-Friendly
    association plots.

    o   autoload() accepts lib.loc and other arguments to library()

    o   bxp() has new argument `frame.plot', as plot.default().

    o   contour() now has `axes' and `frame.plot' args.

    o   contrasts(, FALSE) now always returns an identity matrix,
    to make model.matrix compatible with S. This affects models
    such as lm(y ~ o - 1) where o is an ordered factor.

    o   `where' command added to debug().

    o   demo(dynload) (which used the superseded call_R interface)
    has been removed.

    o   Class "dendrogram" in package mva providing general support
    for tree-like structures (plotting, cutting, ...).

    o   dev.copy2eps() and dev2bitmap() preserve the aspect ratio of the
    copied device if just one of `width' and `height' is specified.

    o   dump() has new argument append, argument `fileout' has been
    renamed to `file' (for consistency with all other functions).

    o   edit.default() now checks for an unset `editor' argument, and
    terminates with an error if the editor cannot be run.

    o   The `mode' argument of exists() and get() is interpreted
    as mode(x) rather than typeof(x), following S.

    o   New functions file.access() and file.info() for information on
    files on the user's file systems.

    o   New convenience function file.copy().

    o   file.show() allows `pager' argument to be an R function, and
    consequently, the `pager' option can be an R function.

    o   Formatting (and printing) of data.frames with complex objects is
    improved.  toString was added as a new function.

    o   format() has a new argument `justify' controlling the
    justification of character strings (and factors).

    o   Formula objects now have an environment and code manipulating
    them needs to take care to preserve it or set an appropriate
    environment.

    o   New function fourfoldplot() for producing fourfold displays of
    2 by 2 by k contingency tables.

    o   gc() now reports the space allocated, not the space free,
    since the total space is now variable.

    o   New primitive gc.time() to report on time spent in garbage
    collection.

    o   hclust() takes new argument `members' allowing dissimilarity
    matrices both for singletons (as until now) and clusters.

    o   help() has an additional `pager' argument which may be passed to
    file.show()  {useful for ESS fans}.

    o   There is now an R `Hershey' list object for Hershey vector font
    computations and documentation.

    o   hist() now returns a "histogram" object and calls the new
    function plot.histogram() for plotting.
    It now also allows character labels.

    o   if(*) now gives a more intelligible error message
    when "*" cannot be coerced to logical.

    o   inherits() is now an internal function and compatible with S.

    o   New function lag.plot() in package ts.

    o   legend() has a new argument pt.bg.

    o   The commands history can be loaded with loadhistory(), saved
    with savehistory() and displayed with history(), under Windows
    and under Unix using the readline or GNOME interfaces.

    o   mad() has new (logical) arguments "low" and "high" (the first
    giving S compatibility).

    o   New function manova() and summary method.

    o   Function mantelhaen.test() in package ctest now can deal with
    general I x J x K tables.  In addition, in the 2 x 2 x K case,
    it can also perform an exact conditional test of independence,
    and gives confidence intervals for the common odds ratio.

    o   model.frame() now uses the environment of its formula argument,
    rather than the parent environment, to evaluate variables not
    found in the data argument. See help(formula).

    o   mosaicplot() can now also create extended mosaic plots, which
    visualize the residuals from a log-linear model using color and
    outline.

    o   New utility function n2mfrow().

    o   nlm(check.analyticals = TRUE) now warns if the supplied
    gradient and/or hessian are of the wrong length.

    o   New function object.size() to give approximate memory allocation.

    o   optim() now checks the length of an analytical gradient at
    each evaluation.

    o   The L-BFGS-B method of optim() now support tracing, at several
    levels of detail.

     o  options(check.bounds = TRUE)  makes each vector extension
    by sub-assignment ("x[.] <- .") produce a warning.

   o    options(width) now admits to a limit (previously 200, now
    10000) and gives a more informative message if out of range
    (as it does now for digits and expressions).

    o   Function path.expand() to do tilde-expansion on file paths.
    This provides an interface to R_ExpandFileName, which is now
    a documented entry point.

    o   .Platform has new component "endian", useful for binary file
    manipulations.

    o   plot.function() and curve() now take xlim as default for (from,to)
    if the former is specified.

    o   plot.hclust() allows arguments main, sub, etc, and has non-empty
    defaults for these.

    o   plot.ts(x,y) now allows to suppress labels and lines;
    it is better documented.

    o   The postscript() driver now allows a user-specified family so,
    for example, one can use the same fonts in diagrams as in
    running text.

    o   The postscript() driver allows its prolog to be changed (by an
    expert) via object .ps.prolog.

    o   prop.table() and margin.table() now work with an empty `margin'.

    o   Formerly deprecated function provide() is now defunct.

    o   New functions read.delim() and read.delim2() to make it
    easier to read delimited files as Windows programs tend to
    create (usually TAB separated).

    o   New readLines() function to read a file line-by-line.

    o   New functions reshapeLong() and reshapeWide() emulating Stata's
    reshape command. These are still labeled experimental and
    might be improved (or removed) in later versions.

    o   row.names() and row.names<-() are now generic functions which
    call rownames() as their default method and have methods for
    class "data.frame".

    o   New function Rprof() for profiling R expressions under Unix.
    Configure with `--enable-R-profiling' (on by default) to make
    this operational.

    o   save(, oldstyle=TRUE) has been withdrawn.

    o   scan() and read.table() have a new argument `fill' which can
    be set TRUE to allow reading files with unequal number of
    fields per line. (Programs like Excel have a habit of creating
    such files when exporting.)

    o   scan() and read.table() have a new argument `blank.lines.skip'
    to allow blank lines to be read.

    o   scan() now reads empty character fields as "" not "NA" unless
    "" is included in na.strings.

    o   smooth() in package eda has a better default (3RS3R instead of
    3RSR) and more arguments, e.g. `twiceit' for some S
    compatibility and `kind = "3R"' for running medians of 3.

    o   strsplit() has a new argument `extended' controlling whether to
    use extended (the default) or basic regular expressions for
    splitting.

    o   Sys.getenv() becomes the preferred name for getenv(), which is
    now deprecated.

    o   New functions Sys.getlocale() and Sys.setlocale() to query and
    set aspects of the locale of the R process, and
    Sys.localeconv() to find the default decimal point, etc.

    o   New function Sys.info() for platform, host and user information.

    o   New function Sys.putenv() to set environment variables.

    o   New function Sys.sleep() to suspend execution for a while.

    o   Date-time support functions with classes "POSIXct" and
    "POSIXlt" to represent dates/times (resolution 1 second) in
    the POSIX formats.  Functions include Sys.time(), as.POSIXct(),
    strftime(), strptime(),  and methods for format, plot, c, ....
    There are conversion functions for objects from packages
    `date' and `chron'; unlike those packages these support
    functions know about time zones (if the OS does).

    o   tcltk package now has tkpager() which is designed to be used
    by file.show() and shows help pages etc. in separate text
    widgets.

    o   tcltk is now more careful about removing the objects
    representing widgets in the R workspace when the windows are
    destroyed (e.g. using window manager controls)

    o   tcltk package has had several canvas functions implemented.

    o   tcltk now wraps callbacks to R in a try() construct - the
    nonlocal return from R's error handling could bring the Tk
    system into a strange state.

    o   New demos for tcltk: tkfaq, tkfilefind, tkcanvas.

    o   termplot() now has an `ask' argument.

    o   terms() creates objects which now inherit from class "formula",
    so for example as.formula(terms.object) needs to be replaced by
    formula(terms.object).

    o   traceback() is now printed un-quoted and labelled by the
    frame number.

    o   New argument `recursive' to unlink(). The default behaviour on
    Unix is now that of rm -f, not rm -rf.  unlink() is now
    compatible across platforms.

    o   New functions write.ftable() and read.ftable() for writing out
    and reading in flat contingency tables.

    o   write.table() now quotes factor columns if quote=TRUE, and has
    a new argument `qmethod' to control the escaping of
    embedded quotes in character or factor columns.

    o   New function xtabs() providing a formula interface to cross
    tabulation.


    o   The R Data Import/Export Manual (`R-data.texi') has been added.

    o   The set of valid R names is now described (at last) in R-intro.

    o   The R Language Manual (`R-lang.texi') is now included and built
    in the same way as the other manuals.

    o   The R manuals (R-intro, R-exts, ...) are converted to HTML
    format (if the necessary texinfo tools are available) and
    linked into the top HTML help page.

    o   The header file `R.h' and those included from it are now usable
    with C++ code.

    o   New header file `R_ext/Boolean.h': Rboolean type with TRUE and
    FALSE enum constants.

    o   New header file `Rgraphics.h' to allow addons to use graphics
    structures.

    o   Recommended include file `Rmath.h' replaces `R_ext/Mathlib.h'.

    o   Bessel, beta and gamma functions are now documented as part of
    the API.  Undocumented entry points are no longer in the
    header files, and some are no longer visible.

    o   Calloc & Realloc failures now give size information.

    o   DESCRIPTION file in installed packages has a new `Built:' field
    giving build information (R version, platform, date).

    o   Much improved support for C++ code in add-on packages under Unix.
    New configure/build variables SHLIB_CXXLD and SHLIB_CXXLDFLAGS
    for specifying the command and flags needed for building shared
    libraries containing objects from a C++ compiler.
    Configure tries to get these right in typical cases (GNU tools
    and/or common platforms).
    C++ source suffixes `.cpp' and `.C' are now recognized in
    addition to `.cc'.

    o   Configure/build variables MAINLD and MAINLDFLAGS are renamed to
    MAIN_LD and MAIN_LDFLAGS for consistency with other MAIN_* vars,
    similarly for SHLIBLD and SHLIBLDFLAGS.

    o   Configure/build variable FLIBS now only contains the Fortran 77
    intrinsic and run-time libraries needed for linking a Fortran 77
    program or shared library (as determined by configure).  BLAS
    library detection was extended, with results saved to the Make
    variable BLAS_LIBS which is also available to add-on packages.

    o   R CMD build and check have been completely re-written in Perl.
    In addition to running examples, check now also checks the
    directory structure and control files, makes a temporary
    installation and runs LaTeX on the help pages.  Build has been
    reduced to cleaning, rewriting indices and creating tar files.

    The same files of Perl code are now also used under Windows.

    o   Add-ons for utilities like Perl or LaTeX have now a central
    place in $R_HOME/share. Migration of existing files might take
    a while, though.

    o   Preliminary support for building R as a shared library (`libR')
    under Unix.  Use configure with option `--enable-R-shlib' or do
    `make libR' in directory `src/main' to create the shared
    library.

    There is also a linker front-end `R CMD LINK' which is useful
    for creating executable programs linked against the R shared
    library.


BUG FIXES

    o   New "[.AsIs" function fixing PR#665.

    o   Effectively zero-length arrows() are omitted (rather than getting
    a system- and device-dependent arbitrary angle).

    o   barplot() passes "..." down to plot.window as documented.

    o   bxp(*) now obeys axes, xaxt, yaxt & ylim arguments (again?).

    o   contour(.., labcex = 0.6, .. , vfont = c("sans serif", "plain"), ..)
    now behaves as it has been documented, PR#740.

    o   D(.) is now more correctly documented, has second argument
    "name" instead of "namevec" (S compatibility), and gives a warning
    when name has not length 1.

    o   dbinom() and dpois() now use a the accurate algorithm of C.Loader;
    e.g., 1 - 2*sum(dbinom(0:999, 1999, 1/2)) is now zero instead of 1e-12.

    o   dbeta(), df(), dt(), dnbinom(), dgeom(), dgamma(),
    now all use the more accurate algorithms of dbinom() and dpois();
    More limits are computed correctly, e.g. dgeom(Inf,*), or
    dnbinom(*,*,p=0), and integer argument coercion is more consistent.

    o   dbeta(x, a,b) was giving NaN and Inf for large a and b.

    o   The math functions now (again!) return NaN (not NA)
    when the warning message says so (e.g. gamma(-1)).

    o   Paper sizes for "a4" and "legal" were interchanged in dev.print().

    o   Improved logic in the re-scaling of plots in dev.print().

    o   dev.print() and dev.copy2eps() now evaluate arguments as
    needed, so e.g. dev.print(file="junk.ps", horizontal=F) will
    work (previously =FALSE was needed).

    o   Now dweibull(0,1) == dexp(0) == 1 for consistency.

    o   Changing column modes from factor/character to numeric in
    edit.data.frame() (and fix() on data frames) is now allowed.

    o   gctorture() did return a value although documented not to, that of
    gcinfo.  It now returns the previous setting of gctorture.

    o   glm() now follows lm() in dropping unused factor levels when fitting.

    o   hist() now labels y-axis Density rather than Relative Frequency
    if freq=FALSE. The `intensities' component of the result is
    now deprecated and `density' should be used instead.

    o   hsv() truncation bug fixed (hopefully correctly this time...)

    o   library.dynam() no longer fails if the library appears more than
    once in lib.loc.

    o   lm.fit & lm.wfit (and hence lm) now give understandable error
    messages when there are 0 non-NA cases.

    o   match() does not always use "as.character()" anymore, fixes PR#741.

    o   Trimmed mean() and median() are no longer attempted for complex
    data.

    o   median() of empty vector is now NA.

    o   model.matrix() can now handle NAs in factors.

    o   model.matrix() now uses ":" not "." in labelling interaction
    terms, as terms() and the prototype do (PR#701).

    o   old.packages() now sorts version strings correctly by
    splitting at "." and "-".

    o   optim() has several new precautions against bugs, one of which was
    an infinite loop in the L-BFGS-B method if the derivatives
    were inaccurate (or if numerical derivatives were used and the
    problem was badly scaled).

    o   pairs() now obeys an "cex = " argument, and so does panel.smooth().

    o   pf() had a bug in the code handling large noncentrality
    parameters, going all the way back to the original Appl.Stat.
    algorithm (PR#752). This affected pbeta() as well.

    o   phantom(expr) in plotmath was used to calculate the bounding
    boxes, but the space was not actually used in typesetting the
    expression (PR#622).

    o   Problem with subsetting and "..." arguments in plot.formula()
    (PR#757)

    o   plot.lm() has a better default for its `ask' argument.

    o   plot.new() does *NOT* allow an argument (`ask') anymore.
    This has not been working (since ~ R 0.49), is low-level and
    hence should not break anything.

    o   plot.stl() now uses correct time labels for tickmarks of x-axes.

    o   pnorm() is somewhat more accurate (SIXTEN=16; PR#699) and
    `infinitesimally faster' in some cases, thanks to James M. Rath.

    o   Failure to open a postscript() device now gives diagnostic warnings.

    o   Zero the widths of undefined chars in postscript().

    o   Make font metrics local to the device in postscript(), so
    that simultaneous instances of postscript/xfig/bitmap can use
    different values for `family'.

    o   postscript() no longer uses the initclip operator, which
    was against the EPSF specifications and broke inclusion of
    graphics in some documents.

    o   In postscript(), cleaned up the internals to fix some
    cases where it was unclear whether a variable was meant to set
    or track device status.

    o   In some cases, emitted postscript violated the PS Document
    Structuring Conventions since some settings were carried over from
    one page to the next. (Caused breakage when turning
    antialiasing on/off in "gv" for instance.)

    o   The DocumentMedia comment in postscript() output was wrong,
    and the font DSC comments have been changed to the preferred
    style for DSC 3.0.

    o   pretty(x <- c(2.8,3))[1] - x[1] is now 0; in general,
    p <- pretty(x) now again fulfills  p[1] <= x[] <= p[length(p)].

    o   print.dist() {mva} now passes "..." to print.default.

    o   print.noquote("ABC") now works.

    o   prompt(fn) uses fn's "source" attribute if it has one.

    o   In prop.test(), the conf.int. now contains the estimate,
    even when that is 0 or 1 (PR#714).

    o   qnorm(0) and qnorm(1) now give -/+ Inf (again!).

    o   qt(*, log = TRUE) has a somewhat extended working range.

    o   Specifying col.names in read.table() now overrides any header
    line in the data file.

    o   Bug caused rpois() to generate biased variables in some cases.

    o   scale(scale=TRUE) gave all NAs in any columns containing NAs.

    o   eda's smooth() now computes Tukey's endrule properly.

    o   smooth.spline()'s GCV method now uses a more accurate formula
    when there are repeated x points.

    o   stars() fix (for 0/NA columns) PR#739.

    o   data(state)'s  state.abb  has been corrected to use official
    2-letter abbrevations.

    o   strsplit() had two memory leaks.

    o   tcltk interface now has better string quoting and no longer breaks on
    strings with unbalanced braces

    o   tcltk callbacks used to include a "%..." argument on the call if the
    callback function had a "..." argument. This is no longer the case.

    o   t.test() allows an input vector of length 2.

    o   Method dispatch in primitive functions such as `c' only
    occurred if they were called by that name, and in particular
    not if used in lapply or called as .Primitive("c").  It now
    always occurs.

    o   Method dispatching now forces evaluation of promises, so
    autoloading works with methods.

    o   c(0.099999994, 0.2) prints as 0.1 0.2 not 0.10 0.20 after
    correcting the precision calculations.

    o   Internal function fprec was overflowing for numbers around
    1e-305.

    o   [internal] .C("strsignif",*) doesn't use fixed size strings anymore
    (possible overflow).

    o   ff[i] <- r  now works for formula (and potentially other
    non-standard) objects ff.

    o   Errors in argument matching could cause crashes if error
    handler was used.

    o   NULL == ... now gives logical(0) instead of an error.
    This fixes a bug with e.g. apply(X,2,median, na.rm = TRUE) and
    all(NULL == NULL) is now TRUE.

    o   polylines with more than 64K pieces will now work on more X
    servers with the x11 device.

    o   R CMD Rd2dvi now again works with file names containing "_" or "$".

    o   R CMD Rdconv now handles .rd as input file extension correctly
    in all cases.

    o   make install could fail if there were no shared libraries to
    install (e.g. on vanilla Solaris).

    o   Rd's \describe{} constructs are converted better to text
    output, and \items of >=22 chars now work.

    o   Help aliases "(" and "{" now work, apart from as PDF hyperlinks.

    o   NA || x , NA && y (etc) do not give errors anymore, but work as
    the "|" and "&" operators and as documented (PR#749).

    o   Coercing lists to functions failed if argument list was empty.
    (PR#743). Also coercing functions to lists was wrong when the
    body was a single constant.



    **************************************************
    *                        *
    *          1.1 SERIES NEWS           *
    *                        *
    **************************************************


        CHANGES IN R VERSION 1.1.1


NEW FEATURES

    o   data(), example() and help() now search the loaded packages, then
    in their .lib.loc argument, the latter as pre-0.99.0.  See
    their help pages for the precise details.

    o   help() has a new argument `try.all.packages' set by the option
    "help.try.all.packages". If help is not found in the normal
    path and this is TRUE then a search is made of all packages
    for possible matches.

    o   Improved detection of Tcl/Tk at configure time.  One can either
    set configure variables TCLTK_CPPFLAGS and TCLTK_LIBS, or give
    the locations of the tclConfig.sh and tkConfig.sh scripts via
    the `--with-tcl-config' and `--with-tk-config' arguments.

    o   prop.trend.test() - test for trend in proportions.

    o   write.table() has new argument `dec' for setting the decimal
    separator (SPSS/Windows and probably others want commas in
    continental European locales).

    o   Advance warning: save(, oldstyle=TRUE) will no longer be
    available after this release.

    o   Symbols can now be coerced to expressions, making
    as.expression(quote(a)) work


BUG FIXES

    o   data() now works correctly with data-only packages.

    o   Standalone Mathlib can now be made if builddir = srcdir
    (working around an undocumented autoconf `feature').

    o   Check for pre-1.1.0 saved object .Postscript.options in postscript().

    o   More stringent checks on the arguments to dataentry().

    o   Specifying xlab as an expression now works again.

    o   dev2bitmap() works again.

    o   Numerous uses of `F' and `T' replaced by `FALSE' and `TRUE'.

    o   bxp() now extends `ylim' properly when notch=TRUE (and a
    notch is more extreme than other stats).
    Also, varwidth is okay again, see example(split).

    o   Making manuals without making R first now works.

    o   princomp() now works when some eigenvalues are tiny negative
    values (which are treated as zero).

    o   SearchEngine.html was not installed when builddir != srcdir.

    o   lm.{w}fit(x,y,..) now work when x has no column names.
    These functions no longer add and subtract n zeros when there's no
    offset.  They are now documented somewhat.

    o   Some HTML files used src="R.css" instead of href="R.css" causing
    some browsers to ignore the style sheet.  `R.css' now passes the
    w3c CSS validator and gives the intended results with Internet
    Explorer.  `R.css' is copied to all library directories.

    o   The data editor no longer crashes when entries contain more than
    45 characters, and works correctly if the field width is
    larger than the window width.

    o   Recording plots used to ignore graphics events before the last
    replay.

    o   plot(), points(), etc now give warnings and error for invalid
    `type' arguments.

    o   matplot() now allows the same `type's as plot().

    o   dev.print() and dev.copy2eps() now work when called from a
    function, such as dev2bitmap().

    o   anova.glmlist works correctly with decreasing models and
    test="F" now gets the correct residual df.

    o   Functions created (not just edited) with fix() now get
    environment .GlobalEnv not the body of fix.

    o   Rdconv was ignoring OS-specific parts of the files with some
    Perl versions. (This did not affect installing packages.)

    o   R CMD check  did not run more than one specific test.

    o   keyword2html omitted items when changing up a level, so
    the HTML search engine keyword list was missing `data' and
    `utilities', for example.

    o   aov() with multiple strata was setting some spurious options.

    o   Under UNIX, help(, htmlhelp=TRUE) uses the linked copy of the
    HTML file in ~/.R if help.start() has been run recently in the
    session, so the style sheet and hyperlinks should now be found.

    o   dotplot's arguments `color' and `lcolor' are now interpreted
    correctly if they are vectors of length > 1.  (It is not clear
    from the help that this was ever intended.)

    o   Error messages of e.g. do.call() are now spaced properly.

    o   summary(.matrix | .data.frame) now respects a `digits' argument.

    o   scan() recognises quoted strings by default again. The default
    for the quote= argument got set wrongly when it was
    introduced. They are, however, turned off when using sep="\n",
    since you probably want unprocessed lines of text in that
    case.

    o   fixed buglet where scan() would double a character following a
    terminating quote symbol.

    o   kmeans was failing on vector inputs (although not documented
    to accept such).

    o   fixes in predict.lm (John Maindonald)

    o   NCOL got confused by 1D arrays, which it now reports have 1
    column rather than NA.

    o   rep(1:2,c(1,-1)) segfaulted (PR 619)

    o   x[["a"]] <- y rejected some object types for y (e.g.
    expressions) which were accepted in x$a <- y (PR

    o   data editor froze on empty data frame, and more generally on
    zero-length cols.

    o   data editor did not handle factors properly in numeric-edit
    mode.

    o   table() misbehaved on empty (or all-NA) data

    o   data editor now handles empty data frames, allowing data entry
    to begin with  dd<-edit(data.frame())  or
    dd<-data.frame() ; fix(dd)

    o   plotting math expressions when specified as a LANGSXP or
    SYMSXP didn't work in several cases: plot(1,main=quote(a))
    would segfault and there were problems with title(), text(),
    and mtext() as well.

    o   optim(): no more segfault for REPORT=0; corrected error msg; ..
    maxit default is now okay also when "L-*-B" is chosen automatically.
    Using (abs|rel)tol with that method now gives a warning.

    o   text() did not respect its `xpd' argument, the default of which
    is still to use par("xpd"); gave a wrong error message in one case.

    o   polygon() had an incorrect documentation and silently disregarded
    "..." arguments.

    o   predict.loess was giving incorrect results (those for the
    non-robust fit) in the case of a fit with family = "symmetric"
    and surface = "direct" and prediction with se = FALSE.  The
    fitted values were missing for such fits.

    o   Better rendering of ^ and ~ in latex in \code{} (and they should
    not appear outside code and verbatim sections).

    o   Fixed unterminated string problem with lty (PR 584)

    o   Fixed scoping problem with quasi() family (PR 614)


        CHANGES IN R VERSION 1.1.0


NEW FEATURES


    o   There are several changes to the compile and link flags, and
    an attempt is made to use /usr/local/include and
    /usr/local/lib on all platforms.  Please read config.site and
    INSTALL if you have set flags for previous versions.

    o   New package tcltk, providing interface and language bindings for
    the Tcl/Tk graphical interface toolkit. This makes it possible
    to do some rather nifty things with buttons and entry fields
    and so forth in very few lines of code.  It is still somewhat
    experimental so don't go churning out thousands of lines of
    GUI code and then blame us for changing the API later on. It does
    not currently work with GNOME because of event loop differences.
    See demo(tkttest) and demo(tkdensity).

    o   Internally using global R_Expressions [getOption("expressions")]
    dramatically speeds up eval.c.

    o   The X11 support code is now in a separate shared library, and
    option `--gui=none' will run R without X11 support (and so x11()
    and data.entry() will not be available).  R BATCH sets --gui=none.

    o   Configuring without X (e.g., `--without-x') does work (at last).
    configure will report if X11 support has been included.
    If R has been built without X11 the default GUI is "none".

    o   GNOME support files have moved from src/gnome to src/unix/gnome
    and the code is now in a separate shared library.  Both
    `--gui=GNOME' and `--gui=gnome' are allowed.

    The main graphics device for use with GNOME is now called
    gtk(); the x11() device from the X11 support can also be used.
    (The gnome() device remains unreliable, and is by default
    unavailable.)

    All GNOME support now installs in R_HOME/gnome to make it
    easier to package separately.

    o   Command line option `-g' can now be used as short version of
    `--gui'.

    o   The "keep.source" option now defaults to interactive()
    instead of TRUE.

    o   Many interface enhancements to the data editor, which now uses
    (by default) variable-width columns and much less redrawing.
    See ?dataentry for a description of the current user interface.

    o   R under Unix can be sent SIGUSR1 to quit and save or SIGUSR2
    to quit and save without running .Last and on.exit
    expressions.

    o   Added ability to use the graphics device driver to perform
    horizontal justification of strings.  This is used in the
    x11(), windows(), postscript() and xfig() drivers and will
    lead to more accurate placing of centred or right-justified
    strings.

    o   Formulas created with the tilde operator now contain the
    environment in which they were created.  The environment of a
    formula can be accessed with the environment() function.  This
    facility is still experimental; it is intended to help
    simplify writing modeling functions.


    o   $ and $<- are now generic functions.

    o   add1.glm() and drop1.glm() now allow test="F", which is
    appropriate for models with estimated dispersion.

    o   approx() and approxfun() have an extra argument ties= to control
    handling of tied x values

    o   New function as.symbol(), identical to as.name().
    is.symbol and is.name() are now identical by definition;
    before, they were equivalent by implementation.

    o   attach() now works for R data files.

    o   axis() now has additional arguments.  The argument "tick" turns
    tick drawing on and off (on by default).  Additional arguments
    line, pos, and outer; allow more flexible placement of axes.

    o   New device bitmap(), like dev2bitmap() but a stand-alone device.

    o   boxplot() returns (and bxp() accepts) a list containing the summary
    statistics for the boxes (changed from a list of elements one for
    each box).

    o   file="|cmd" is allowed (to pipe output to `cmd'), under cat()
    and postscript() and functions that use them (for example, write()).

    o   New functions chartr() for general-purpose character translation
    in character vectors, and tolower() and toupper() for converting
    alphabetic characters to lower-case and upper-case, respectively.

    o   coplot() has new option subscripts=TRUE to pass the indices
    to the panel function.

    o   cor.test(method="spearman") might give slightly better P values,
    since it now relies on pnorm() (with proper tail) instead of alnorm.

    o   dbinom() works for size=0 (where appropriate).

    o   New trivial function det() for determinant computation
    (the example in ?qr did not seem to be sufficient).

    o   If present in the package, a function .Last.lib will be called
    when a package is detached.

    o   New function dev.copy2eps() copies the current device to an eps
    file, taking the size from that of the device.

    o   dev.print() now prints if possible, and takes the size from
    the device being copied.

    o   edit() or fix() applied to a numeric or character matrix now
    uses the data editor, if available.

    o   edit.data.frame() edits factors in character mode by default,
    and will allow the row names to be edited, by default if they
    are not 1:nrow(name).

    o   expand.model.frame() for adding variables to a model frame.

    o   The handling of estimating the dispersion in glm() fits has been
    changed for consistency across methods.  For `binomial' and
    `poisson' families the dispersion is always taken as one.
    For `quasibinomial' and `quasipoisson' families it is always
    estimated (by residual chisq/residual df).

    o   Using "~" when specifying lib.loc (for example to help() or
    library()) is now supported.

    o   image() has a new argument "breaks" and divides the zlim range
    into equal-length intervals.

    o   install.packages() and update.packages() have a new `destdir'
    argument for the directory to which to download the packages.

    o   New function interaction.plot().

    o   Internal cleanup of lapply()'s C code.

    o   library(), require(), and sys.source() have a new argument
    ` keep.source = getOption("keep.source.pkgs") '.
    This defaults to false, but can be set (also for base) to true
    by setting the environment variable R_KEEP_PKG_SOURCE to "yes"

    o   Par `lty' in lines() now defaults to par("lty") not "solid",
    for consistency with plot().

    o   list.files() [aka dir()]: path argument has now default = "."

    o   locator() allows inline graphics parameters (for the plotting
    it does with type !="n").

    o   New function max.col() from MASS, thanks to V&R.

    o   nlm() can now take additional arguments in ... to be passed to f.

    o   par() returns elements in alphabetical order, and "ann" as a
    logical (not integer).

    o   .Platform has a new component GUI specifying the GUI in use
    (which might be "unknown").

    o   plot.formula() searches for a plot method for the left-side of the
    formula before searching for a plot method for the right-side of
    the formula.

    o   New bitmap devices png() and jpeg() on Unix/X11. (They were
    already available on Windows.)

    o   postscript(print.it=TRUE) now does print the plot file.
    postscript(onefile=FALSE) now produces multiple separate files.

    o   provide() is now deprecated.

    o   New function quade.test() in package ctest for the Quade test
    for unreplicated blocked data.

    o   quantile(x, probs) now propagates NA/NaN in probs.

    o   Option for user-supplied normal random generator in RNGkind().

    o   read.fwf() is no longer dependent on Perl.

    o   New arguments check.names and strip.white to read.table() and
    friends.

    o   Functions recordPlot() and replayPlot() save a plot to an R
    variable and replay it.

    o   residuals.lm() also allows types "partial" and "response"
    as residuals.glm().

    o   Added col option to rug().

    o   scale() is now generic with scale.default method.

    o   New "call. = TRUE" argument for stop(), and
    new function  stopifnot(.) -- to be used in "make check".

    o   str(.) has a new optional argument "nchar.max = 128" and truncates
    strings longer than that.  Also eliminated a few minor glitches.

    o   The symbols() function is now implemented.

    o   New function termplot() with similar functionality to
    plot.gam() in S.

    o   The parameters to title() which specify the labels may now
    be specified as a list containing the parameter together
    with additional modifying par values (cex, col, font) which
    affect just that label.

    title() also has new line and outer arguments which provide
    functionality which matches that in axis().

    o   New functions which.min() amd which.max().

    o   The Wilcoxon and Ansari-Bradley tests now optionally return
    confidence intervals for the location or scale parameter of
    interest.

    o   New argument `extend' to window() (and updated documentation).

    o   write.table() can now write CSV files in the format Excel expects.

    o   New device xfig() to produce XFig files.

    o   New xyz.coords() utility function to be used for 3D highlevel plots.


    o   R CMD build now also works for package bundles.

    o   Rdconv allows an output file to be specified.

    o   Initial support for C++ source code in add-on packages under Unix.

    o   Mathlib can be built as a standalone library: see directory
    src/nmath/standalone.



BUG FIXES

    o   The Mathlib functions now use exactly the same values for
    +/-Inf, NaN and NA as the rest of R in all cases.

    o   Improved automatic remaking.


    o   option keep.source was not set correctly before the base
    package was loaded: some functions in the base package had
    the source kept.  The memory usage should now be reduced by ca 1Mb.

    o   The base file is no longer closed twice in case of a syntax
    error (caused segfault on Linux).

    o   The X11 data editor scrolls cells and so allows more than ca 10
    characters to be entered.  Several interface/redraw errors
    have been corrected.

    o   Using `destroy' or `close' on the X11 data editor window killed R.

    o   Multiple `destroy' events or X11 errors killed R (PR#400).

    o   Warnings from .Last or closing devices are printed where
    sensible (e.g. not on GNOME nor Windows console).

    o   add1.glm() and drop1.glm() gave incorrect results in the "Chisq"
    test option when the scale was estimated.

    o   aggregate() applied to multiple time series lost the series names.

    o   as.hclust.twins() in package mva sets method=NA (PR#538)

    o   ave(1:3) now works (as when is.null(list()) was TRUE years ago).

    o   barplot(c(0.1, 0.5, 1), ylim = c(0, 1)) now works: [xy]axs="i"
    and exact limits now labels the limits.

    o   by() works when embedded in a function.

    o   The xlab and ylab in coplot() now set the x and y axis labels,
    as in S.  Supply a second component to label the conditioning
    variables.

    o   count.fields() and read.table() now have the same default
    quote = "\"'".

    o   guard against segfault in dataentry(x<-1, Modes = plot), and the like.

    o   dev.print() now checks if the current device is replayable
    (and not all devices were, despite the documentation).

    o   The gtk() device (formerly x11() under GNOME) was incorrectly
    returning character information, so in particular `*' was
    wrongly centred as a plotting symbol.

    o   is.qr() checks not only for $qr, but also for $rank & $qraux, PR#482.

    o   library() will not leave the package on the search path if
    loading fails (including if .First.lib fails).

    o   lqs(, method="S") rounded k0 on passing to C.

    o   na.omit() now handles vectors and matrices as well as data
    frames.

    o   plot.lm(*, which=4) now works thanks to Marcel Wolbers.

    o   postscript() now uses the options "papersize" and "printcmd"
    rather than the values of R_PAPERSIZE in the environment
    and R_PRINTCMD found at build time.

    o   postscript() now makes use of kerning information in computing
    string widths.

    o   M <- 2 ; print(ppr(.., nterms = M))  now works.

    o   ppr(, sm.method="spline") had an internal limit of 250 rows:
    this is now 2500 and is now checked.

    o   predict.lm(,type="terms",se.fit=T) gives correct standard errors
    (thanks to John Maindonald)

    o   print.ftable() now returns its argument.

    o   proj.aovlist() now gives a non-zero result for strata with
    no fitted effects.

    o   qnorm() is now based on AS 241 instead of AS 111, and should
    give precise results up to 16 digits precision.

    o   rgeom(, prob=1) gives 0 rather than NA

    o   rpois(*, lambda) now works when lambda > .Machine$integer.max

    o   strheight("X") with no active device would segfault.

    o   system() is now (partially) functional on systems without popen.

    o   Fixed bug in undoc() - requiring new `chdir' argument
    for sys.source()

    o   Fixed problem in usemethod() where CAR(call) could be non-symbol.

    o   The x11() device no longer crashes R if a font is not found,
    and will warn if there is a size mismatch of more than 10%.


    o   R CMD Rd2dvi now sorts files alphabetically.

    o   Rdconv now reports if an invalid type is specified (rather
    than using latex).

    o   Support for Rd conversion to Sd has been reinstated (it was
    unintentionally removed along with nroff-based conversion to text).

    o   \deqn{} fix in R-exts.texi, PR#523.


    o   Linpack.h now makes clear which routines are actually in R.

    o   Entry-point "pythag" is now loaded even though it is not
    necessarily used in R.  Where "hypot" is available pythag
    just calls hypot after checking for special values.

    o   call_R will now correctly handle character vector arguments.

    o   The alphabet links on top of HTML function indices with more than
    100 entries now contain only the letters which are really
    first letters of at least one entry.



        CHANGES IN R VERSION 1.0.1


BUG FIXES

    o   pgamma(Inf, 1, Inf) gives NaN instead of an infinite loop, PR#462.

    o   Inline xaxt and yaxt parameters were ignored.

    o   Setting the normal RNG was not always recorded in .Random.seed.

    o   \link[pkg]{foo} links were wrongly translated to HTML.

    o   Direct use of show.data() with no args was incorrect.

    o   print.coefmat does sensible things if options
    show.signif.stars and show.coef.Pvalues are not set correctly.

    o   x <- list(a=1, b=2) ; x["c"] <- 3 now (again) stretches the list
    rather than give a "subscript out of bounds" error.

    o   Models with response appearing on rhs could cause segfault.

    o   as.data.frame.matrix will now ensure the columns added have
    non-empty names.

    o   Some (strange?) model formulas could cause memory corruption
    (thanks to John Fox for digging this up).

    o   Matrix multiplication in cases such as 1:3 %*% t(1:2) is accepted.

    o   Options --nsize and --vsize to R CMD check gave warning
    messages and only one was accepted.

    o   The autoload()s during startup are "wrapped" such
    that conflicting objects don't break startup.

    o   cor.test(*, meth="spear") {pkg ctest} now works (again) for n <= 6

    o   scale = 0 in biplot.princomp() now works.

    o   The scores given by princomp(, cor = TRUE) and the rotated
    values given by prcomp(, scale = TRUE) are now computed from the
    scaled data.

    o   barplot now works okay when length(col) < length(legend.txt),
    thanks to Ben Bolker, PR#494.

    o   legend has new args `ncol' and `horiz' thanks to Ben Bolker.

    o   kernel("dirichlet", m=10, r=1) in package ts now works.

    o   save/restore of  environments containing "..." object should
    work now.

    o   qhyper should work better for large N.

    o   qbinom(1-1e-16, n, p) , qpois() and qnbinom(*) looped for ever.

    o   as.matrix.data.frame no longer escapes quotes in character
    vectors.

    o   R would try to save the readline history at the end of
    non-interactive sessions, causing crashes on some systems.

    o   Subtle roundoff problems caused arrays to be allocated short in
    loess.c in some cases, leading to segfaults.

    o   Document that postscript(file="") sends the output directly to
    the default printer.

    o   ts.union(, dframe=TRUE) had a long-standing typo, now works.

    o   save(, ascii=TRUE) had problem with octal escapes in strings
    when there was a digit following, should work now.

    o   matpoints() and matlines() now also have a "type =" argument
    with defaults "p" and "l", respectively; PR#506.

    o   The new Perl 5.6 broke our version-detection mechanism. A
    better one has been inserted.

    o   X11(colortype="gray") failed to work on 8-bit screens, and
    more generally when colour allocation failed X11() did not
    revert to monochrome correctly (and did not say it was doing so).

    It was not documented in the help that to change the X11
    colortype one needs to close all open X11 devices.

    o   loessf.f in modreg defined DSIGN unecessarily and this caused
    a conflict on AIX.

    o   plot.lm will now work with rlm objects.

    o   start and end behave better when the frequency is not an integer.

    o   aggregate.ts is closer to S-PLUS's aggregate.rts.

    o   quantile(x) now works when x contains several +/- Inf's.

    o   guard against segfault in dataentry(0,0) (or, more
    realistically, when mistyping data.entry(x,y) as
    dataentry(x,y))


    *********************************************************
    *                           *
    *   News of 1.0.0 and earlier is in file `ONEWS'    *
    *                           *
    *********************************************************