R 2.8.0 is released

Peter Dalgaard P.Dalgaard at biostat.ku.dk
Mon Oct 20 11:33:08 CEST 2008

I've rolled up R-2.8.0.tar.gz a short while ago. This is a development 
release which contains a number of new features.

Also, a number of mostly minor bugs have been fixed. See the full list
of changes below.

You can get it (later today) from


or wait for it to be mirrored at a CRAN site nearer to you. In case of 
impatience, try http://www.biostat.ku.dk/~pd/R-release

Binaries for various platforms will appear in due course.
        For the R Core Team

        Peter Dalgaard

These are the md5sums for the freshly created files, in case you wish
to check that they are uncorrupted:

70447ae7f2c35233d3065b004aa4f331  INSTALL
433182754c05c2cf7a04ad0da474a1d0  README
4f004de59e24a52d0f500063b4603bcb  OONEWS
ff4bd9073ef440b1eb43b1428ce96872  ONEWS
2e66a7217f24f1d7961275438243adc7  NEWS
1ad28cbc84485ccdf4ce5721b34ed645  THANKS
070cca21d9f8a6af15f992edb47a24d5  AUTHORS
a6f89e2100d9b6cdffcea4f398e37343  COPYING.LIB
eb723b61539feef013de476e68b5c50a  COPYING
020479f381d5f9038dcb18708997f5da  RESOURCES
5717a4e29823dd379e4a6cf82e820eb2  FAQ
5213c9644aec984278b669df1a63a2ce  R-2.8.0.tar.gz
5213c9644aec984278b669df1a63a2ce  R-latest.tar.gz

This is the relevant part of the NEWS file:

                CHANGES IN R VERSION 2.8.0


    o   var(), cov(), cor(), sd() etc now by default (when 'use' is not
        specified) return NA in many cases where they signalled an
        error before.


    o   abbreviate() gains an optional argument 'strict' allowing cheap
        and fast strict abbrevation.

    o   The "lm" methods of add1(), anova() and drop1() warn if they are
        mis-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'

    o   bitmap() and dev2bitmap() gain support for anti-aliasing.
        The default type has been changed to 'png16m', which supports

    o   Box.test() gains a 'fitdf' argument to adjust the degrees of
        freedom if applied to residuals.

    o   browseURL() has a new argument 'encodeIfNeeded' to use
        URLencode() in cases where it seems likely that would be
        helpful.  (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'.  This
        returns NA instead of signalling an error for NA observations.
        Another new option is 'use = "na.or.complete"' which is the default
        for 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 screen
        devices if getOption("device") is a function (as well as by name).

    o   dev.new() gains a '...' argument which can be used to pass
        named arguments which will be used if appropriate to the
        device selected.

    o   dimnames(x) <- value extends 'value' if it a list and too
        short, and 'x' is an array.  This allows constructions such as
        dimnames(x)[[1]] <- 1:3 to work whether or not 'x' already has

    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-help
        according to "the rules". It is built on the new utility,
        create.post() on which also bug.report() is based now; both
        thanks to a contribution by Heather Turner.

    o   help.search() now assumes that non-ASCII items are in latin1
        if that makes sense (all known examples on CRAN are).

    o   HoltWinters() and decompose() use a (statistically) more
        efficient computation for seasonal fits (they used to waste
        one period).

    o   intToUtf8() and intToBits() now accept numeric vectors,
        truncating them to integers.

    o   is.unsorted() gains an argument 'strictly'.  It now works for
        classed objects with a >= or > method (as incorrectly
        documented earlier).

    o   library() no longer warns about the masking objects that are
        identical(.,.) to those they mask.

    o   lockBinding(), unlockBinding(), lockEnvironment() and
        makeActiveBinding() now all return invisibly (they always
        return 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 via
        the 'REPORT' control argument, thanks to code proposals by
        Thomas Petzoldt.

    o   The 'factory-fresh' defaults for options("device") have been
        changed to refer to the devices as functions in the grDevices
        namespace and not as names.  This makes it more likely that
        the incorrect (since R 2.5.0) assumption in packages that
        get(getOption("device"))() will work will catch users of those

    o   pch=16 now has no border (for consistency with 15, 17, 18) and
        hence is now different from pch=19.

    o   pdf() has new arguments 'useDingbats' (set this to FALSE for use
        with broken viewers) and 'colormodel'.  It now only references
        the ZapfDingbats font if it is used (for small opaque circles).

        The default PDF version is now 1.4, since viewers that do not
        accept that are now rare.

        Different viewers were rendering consecutive text() calls on a
        pdf() device in different ways where translucency was
        involved.  The PDF generated has been changed to force each
        call to be rendered separately (which is the way xpdf or
        ghostscript was rendering, but Acrobat was forming a
        transparency group), which is consistent with other graphics
        devices supporting semi-transparency.

    o   plot.dendrogram() has new arguments (xlim, ylim) which allows
        zooming into a hiearchical clustering dendrogram.

    o   plot.histogram() gains an 'ann' argument. (Wish from Ben Bolker.)

    o   plot(<lm_obj>) now warns when it omits points with leverage one
        from 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 univariate
        t-statistics rather than a confidence region for all the
        parameters (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() allow
        raw 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' to
        read.table(): this allows the latter's default to be used.

    o   readBin(), writeBin(), readChar() and writeChar() now open a
        connection which was not already open in an appropriate binary
        mode rather than the default mode.

        readLines(), cat() and sink() now open a connection which was
        not already open in an appropriate text mode rather than the
        default mode.

    o   readCitationFile() (and hence citation) now reads a package's
        CITATION file in the package's declared encoding (if there is one).

    o   The behaviour of readLines() for incomplete final lines on
        binary-mode connections has been changed to be like blocking
        rather than non-blocking text-mode connections.

    o   A new reorder.character() method has been added.  This allows
        use 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 the
        results are more likely to be correct to representation error.

    o   rug() now uses axis()'s new arguments from 2.7.2, hence no
        longer draws an axis line.

    o   save() (optionally, but by default) checks for the existence
        of objects before opening the file/connections (wish of

    o   segments(), arrows() and rect() allow zero-length
        coordinates.  (Wish of PR#11192)

    o   set.seed(kind=NULL) now takes 'kind' from a saved seed if the
        workspace has been restored or .Random.seed has been set in
        some other way.  Previously it took the 'currently used' value,
        which was "default" unless random numbers had been used in
        the current session.  Similarly for the values reported by
        RNGkind().  (Related to PR#12567.)

        set.seed() gains a 'normal.kind' argument.

    o   setEPS() and setPS() gain '...' to allow other arguments to be
        passed to ps.options(), including overriding 'width' and 'height'.

    o   setTimeLimit() function to set limits on the CPU
        and/or elapsed time for each top-level computation, and
        setSessionLimit() to set limits for the rest of the session.

    o   splinefun() has a new method = "monoH.FC" for monotone Hermite
        spline interpolation.

    o   sprintf() optionally supports the %a/%A notation of C99 (if the
        platform does, including under Windows).

    o   str()'s default method gains a 'formatNum' function argument which
        is used for formatting numeric vectors.  Note that this is very
        slightly not backward compatible, and that its default may change
        before release.

    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 test
        statistics, and gains a 'tol' argument to allow highly
        correlated responses to be explored (with probable loss of
        accuracy).  Similar changes have been made to anova.mlm() and

    o   Sweave() now writes concordance information inside a
        \Sconcordance LaTeX macro, which allows it to be inserted into
        PDF output.

    o   system.time() now uses lazy evaluation rather than
        eval/substitute, which results in more natural scoping. (PR#11169)

    o   In table(), 'exclude=NULL' now does something also for factor
        arguments. A new 'useNA' argument allows you to control
        whether to add NA levels unconditionally or only when present
        in data. A new convenience function addNA() gives similar
        functionality by adding NA levels to individual factors.

    o   unlink() tries the literal pattern if it does not match with
        wildcards interpreted -- this helps with e.g. unlink("a[b")
        which previously needed to be unlink("a\\[b").

    o   update.packages() gains an argument 'oldPkgs', where
        new.packages() and old.packages() get 'instPkgs'.  These allow to
        consider only subsets of packages instead of all installed ones.

    o   which(b) is somewhat faster now, notably for named vectors, thanks
        to a suggestion by Henrik Bengtsson.

    o   New generic function xtfrm() as an auxiliary helper for
        sort(), order() and rank().  This should return a numeric
        vector that sorts in the same way as its input.  The default
        method supports any class with ==, > and is.na() methods but
        specific methods can be much faster.

        As a side-effect, rank() will now work better on classed
        objects, although possibly rather slowly.

    o   X11() and capabilities("X11") now catch some X11 I/O errors that
        previously terminated R.  These were rare and have only be
        seen 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 a
        string now gives a truncation warning (unless
        options("warnEscapes") is false).

    o   The user environment and profile files can now be specified via
        environment variables 'R_ENVIRON_USER' and 'R_PROFILE_USER',

    o   ?pkg::topic and ?pkg:::topic now find help on 'topic' from
        package '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 for
        Unicode) for collation, enabled by configure option --with-ICU
        on a Unix-alike and by a setting in MkRules on Windows.
        Function icuSetCollate() allows the collation rules (including
        the locale) to be tuned.  [Experimental]

    o   If S4 method dispatch is on and S4 objects are found as
        attributes, show() rather than print() is used to print the
        S4 attributes.

    o   Starting package tcltk without access to Tk (e.g. no available
        display) is now a warning rather than an error, as Tcl
        will still be usable.  (On most platforms it was possible to
        inhibit Tk by not having DISPLAY set, but not on Windows nor
        Mac OS X builds with --with-aqua.)

    o   Using $ on a non-subsettable object (such as a function) is
        now an error (rather than returning NULL).

    o   Hexadecimal numerical constants (such as 0xab.cdp+12) may now
        contain a decimal point.

    o   PCRE has been updated to version 7.8 (mainly bug fixes).

    o   plot.ecdf() now defaults to pch=19 so as to better convey the
        left-closed line segments.


    o   S3 classes that are registered by a call to setOldClass() now
        have the S3 class as a special slot, and therefore so do
        any S4 classes that contain them.  This mechanism is used to
        support S4 classes that extend S3 classes, to the extent
        possible.  See ?Classes, ?setOldClass, and ?S3Class.

        The treatment of special pseudo-classes "matrix", "array", and
        "ts" as S4 classes has also been modified to be more
        consistent and, within limitations imposed by special
        treatment of these objects in the base code, to allow other
        classes 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 can
        be supplied to setOldClass() when the S3 class has known
        attributes of known class.

        setOldClass() now saves all the S3 inheritance, allowing the
        calls to be built up in stages, rather than including all the
        S3 classes in each call.  Also allows as(x,"S3") to generate
        valid S3 inheritance from the stored definition.  See ?S3.

    o   S4 methods may now be defined corresponding to "...", by
        creating a generic function that has "..." as its signature.
        A method will be selected and called if all the arguments
        matching "..." are from this class or a subclass.  See ?dotsMethods.

    o   New functions S3Part() and S3Class() provide access to the
        corresponding S3 object and class for S4 classes that extend
        either an S3 class or a basic R object type.

    o   show(<class definition>) now also shows the class name.


    o   If sub-architectures are used, a copy of Rscript is installed
        in ${R_HOME}/bin/exec${R_ARCH} (since that in ${R_HOME}/bin
        and /usr/bin might be overwritten in a subsequent installation).


    o   LazyLoad: yes is now the default, so packages wanting to avoid
        lazy loading must set 'LazyLoad: no' (or an equivalent value) in
        the DESCRIPTION file.

    o   R CMD INSTALL will now fail if it finds a non-executable
        'configure' script in the package -- this usually indicates a
        file system with insufficient permissions.  If a
        non-executable 'cleanup' script is found and either
        --clean or --preclean is used, a warning is given.


    o   Use in packages of the graphics headers Rdevices.h and
        Rgraphics.h is defunct: they are no longer installed.

    o   options("par.ask.default") is defunct in favour of

    o   The 'device-independent' family "symbol" is defunct: use
        font=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() are

    o   Use of a non-integer .Random.seed is now an error.  (R itself
        has never generated such values, but user code has, and
        R >= 2.6.0 has given a warning.)

    o   methods::allGenerics() is deprecated.

    o   In package installation, SaveImage: yes is now ignored, and
        any 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' and

    o   Use of allocVector(CHARSXP ...) is deprecated and gives a warning.


    o   The default for 'stylepath' in Sweave's (default) RweaveLatex
        driver is now FALSE rather than TRUE if
        SWEAVE_STYLEPATH_DEFAULT is unset : see ?RweaveLatex.
        To support this, tools::texi2dvi adds the R 'texmf' directory
        to the input search path.

    o   R CMD Rd2dvi now previews PDF output (as was documented) if
        R_PDFVIEWER is set (as it will normally be on a Unix-alike but
        not on Windows, where the file association is used by default).

    o   R CMD check checks for binary executable files (which should not
        appear in a source package), using a suitable 'file' if
        available, else by name.

    o   R CMD check now also uses codetools' checks on the body of S4


    o   R_ReadConsole will now be called with a buffer size of 4096
        bytes (rather than 1024): maintainers of alternative
        front-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.


    o   @ now gives an error (and not just a warning) if it is being
        applied 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 all
        satisfy isS4(object).  Previously, prototypes not of object
        type 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 check
        more 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 works
        correctly again.

    o   Repainting of open X11 View() windows is now done whilst an
        X11 dataentry window is in use.

    o   Indexing of data frames with NA column names and a numeric or
        logical column index works again even if columns with NA names
        are selected.

    o   on.exit() has been fixed to use lexical scope in determining
        where to evaluate the exit action when the on.exit expression
        appears in a function argument.

    o   rank() now consistently returns a double result for
        ties.method = "average" and an integer result otherwise.
        Previously the storage mode depended on 'na.last' and if any
        NAs were present.

    o   The "lm" methods of add1(), and drop1() now also work on a model
        fit 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 automatic
        printing, by using methods::show() for S4 objects.

    o   Several bugs fixed in `?` with topics: it previously died trying
        to 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 global
        environment, not in baseenv() where other classes will not be

    o   Class inheritance using explicit coerce= methods via setIs()
        failed  to coerce the argument in method dispatch.  With this
        fixed, a mechanism was needed to prohibit such inheritance
        when it would break the generic function (e.g.,
        initialize). See ?setIs and ?setGeneric.

    o   RSiteSearch() encodes its query (it seems this is occasionally
        needed on some platforms, but encoding other fields is harmful).

    o   'incomparables' in match() was looking up indices in the wrong

    o   write.dcf() did not escape "." according to Debian policy

    o   col2rgb() sometimes opened a graphics device unnecessarily, and
        col2rgb(NA) did not return a transparent color, as documented.

    o   pdf(family="Japan") [and other CIDfonts] no longer seg.faults
        when writing "western" text strings.

    o   as.list() applied to an environment now forces promises and
        returns values.

    o   Promises capturing calls to sys.parent() and friends did not
        work properly when evaluated via method dispatch for internal
        S3 generics.

    o   The default pkgType option for non-CRAN builds of R on Mac OS X
        is now correctly "source" as documented.

    o   The default R_LIBS_USER path in AQUA builds now matches the
        Mac-specifc path used by the Mac GUI: ~/Library/R/x.y/library

    o   splinefun() with natural splines incorrectly evaluated derivatives
        to the left of the first knot. (PR#13132, fix thanks to
        Berwin Turlach)

    o   anova(glm(..., y=FALSE)) now works.  (PR#13098)

    o   cut.Date(x, "weeks") could fail if x has only one unique value
        which fell on a week boundary.  (PR#13159)

   O__  ---- Peter Dalgaard             Øster Farimagsgade 5, Entr.B
  c/ /'_ --- Dept. of Biostatistics     PO Box 2099, 1014 Cph. K
 (*) \(*) -- University of Copenhagen   Denmark      Ph:  (+45) 35327918
~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk)              FAX: (+45) 35327907

More information about the R-announce mailing list