R-1.4.0 is released

About this list Date view Thread view Subject view Author view Attachment view

From: Peter Dalgaard BSA (p.dalgaard@biostat.ku.dk)
Date: Wed 19 Dec 2001 - 22:41:07 EST

Message-id: <x23d27e8to.fsf@blueberry.kubism.ku.dk>

I've rolled up R-1.4.0.tgz a short while ago. This is a major upgrade,
with several new features.

A set of recommended packages which have been tested with R-1.4.0 has
been bundled up. Binary distributions are expected to include these

You can get the files from the developer site




or wait for them to be mirrored at a CRAN site near you. This may not
happen right away due to circumstances in Vienna. Binaries for various
platforms will appear in due course.

As usual, we try to ensure that R can be built on as many platforms as
possible. However, this time the problem with Fortran dynamic
libraries on RedHat 6.2, which previously only affected some packages,
has caught up with the main distribution. I.e. you cannot build R on
that platform without upgrading the compiler suite (building with f2c
probably works).

There are also versions split for floppies.

        For the R Core Team,

        Peter D.

Here's the relevant part of the NEWS file:

                CHANGES IN R VERSION 1.4.0


    [This is a new section to highlight changes in behaviour, which
    may be given in more detail in the following sections.
    Many bug fixes are also user-visible changes.]

    o The default save format has been changed, so saved workspaces
        and objects cannot (by default) be read in earlier versions of R.

    o The number of bins selected by default in a histogram uses
        the correct version of Sturges' formula and will usually be
        one larger.

    o data.frame() no longer converts logical arguments to factors
        (following S4 rather than S3).

    o read.table() has new arguments `nrows' and `colClasses'. If the
        latter is NA (the default), conversion is attempted to
        logical, integer, numeric or complex, not just to numeric.

    o model.matrix() treats logical variables as a factors with
        levels c(FALSE, TRUE) (rather than 0-1 valued numerical
        variables). This makes R compatible with all S versions.

    o Transparency is now supported on most graphics devices.
        This means that using par("bg"), for example in legend(), will
        by default give a transparent rather than opaque background.

    o [dpqr]gamma now has third argument `rate' for S-compatibility
        (and for compatibility with exponentials). Calls which use
        positional matching may need to be altered.

    o The meaning of spar = 0 in smooth.spline() has changed.

    o substring() and substring()<- do nothing silently on a
        character vector of length 0, rather than generating an
        error. This is consistent with other functions and with S.

    o For compatibility with S4, any arithmetic operation using a
        zero-length vector has a zero-length result. (This was
        already true for logical operations, which were compatible
        with S4 rather than S3.)

    o undoc() and codoc() have been moved to the new package `tools'.

    o The name of the site profile now defaults to

    o The startup process for setting environment variables now first
        searches for a site environment file (given by the environment
        variable `R_ENVIRON' if set or `R_HOME/etc/Renviron.site' if
        not), *and* then for a user `.Renviron' file in the current or
        the user's home directory.

    o Former stars(*, colors = v) must now be stars(*, col.segments = v).

    o The default methods for La.svd and La.eigen have changed and
        so there may be sign changes in singular/eigen vectors,
        including in cancor, cmdscale, factanal, princomp and varimax.


    o Transparency is now supported on most graphics devices.
        Internally colors include an alpha channel for opacity, but at
        present there is only visible support for transparent/opaque.
        The new color "transparent" (or NA or "NA") is transparent,
        and is the default background color for most devices. Those
        devices (postscript, XFig, PDF, Windows metafile and printer)
        that previously treated bg = "white" as transparent now have
        "transparent" as the default and will actually print "white".
        (NB: you may have bg = "white" saved in .Postscript.options in
        your workspace.)

    o A package `methods' has been added, containing formal classes
        and methods ("S4" methods), implementing the description in
        the book "Programming with Data". See "?Methods" and the
        references there for more information.

        - In support of this, the "@" operator has been added to the

        - Method dispatch for formal methods (the standardGeneric
          function), is now a primitive. Aside from efficiency issues,
          this allows S3-style generics to also have formal methods
          (not really recommended in the long run, but it should at
          least work). The C-level dispatch is now implemented for
          primitives that use either DispatchGroup or DispatchOrEval

        - A version of the function "plot" in the methods package has
          arguments "x" and "y", to allow methods for either or both.
          See "?setMethod" for examples of such methods.

        - The methods package now uses C-level code (from within
          DispatchOrEval) to dispatch any methods defined for
          primitive functions. As with S3-style methods, methods can
          only be defined if the first argument satisfies is.object(x)
          (not strictly required for formal methods, but imposed for
          now for simplicity and efficiency).

    o Changes to the tcltk package:

        - New interface for accessing Tcl variables, effectively
          making the R representations lexically scoped. The old form
          is being deprecated.

        - Callbacks can now be expressions, with slightly unorthodox
          semantics. In particular this allows bindings to contain
          "break" expressions (this is necessary to bind code to
          e.g. Alt-x without having the key combination also insert an
          "x" in a text widget.)

        - A bunch of file handling and dialog functions (previously
          only available via tkcmd) have been added

    o The "?" operator is now an actual function. It can be used
        (as always) as a unary operator (?plot) and the grammar now
        allows it as a binary operator, planned to allow
        differentiating documentation on the same name but different
        type (class?matrix, for example). So far, no such
        documentation exists.

    o New methods AIC.default() and logLik.glm(), also fixing
        AIC(<glm obj>).

    o axis.POSIXct() allows the label date/times to be specified
        via the new `at' argument.

    o arrows() now allows length = 0 (and draws no arrowheads).

    o Modifications to the access functions for more consistency with S:
        arguments `name', `pos' and `where' are more flexible in
        assign(), exists(), get(), ls(), objects(), remove() and rm().

    o Three new primitive functions have been added to base:
        dataClass(), objWithClass(), and as.environment(). The first two
        are support routines for class() and class<-() in package
        methods. The third replaces pos.to.env() in the functions get(),
        exists(), and friends.

    o barplot() now respects an inline `cex.axis' argument and has a
        separate `cex.names' argument so names and the numeric axis
        labels can be scaled separately. Also, graphics parameters
        intended for axis() such as `las' can now be used.

    o Shading by lines added to functions barplot(), hist(),
        legend(), piechart(), polygon() and rect().

    o bxp() has a show.names argument allowing labels on a single
        boxplot; it and hence boxplot() now makes use of pch, cex, and bg
        for outlier points().

        bxp() and boxplot() also have an argument `outline' to suppress
        outlier drawing {S-PLUS compatibly}.

    o New capabilities() options "GNOME" and "IEEE754".

    o New function casefold(), a wrapper for tolower/toupper
        provided for compatibility with S-PLUS.

    o contour() is now generic.

    o cor.test() in package ctest now also gives an asymptotic
        confidence interval for the Pearson product moment correlation

    o data(), demo() and library() now also return the information
        about available data sets, demos or packages. Similarly,
        help.search() returns its results.

    o density() allows `bw' or `width' to specify a rule to choose the
        bandwidth, and rules "nrd0" (the previous default), "nrd",
        "ucv", "bcv", "SJ-ste" and "SJ-dpi" are supplied (based on
        functions in package MASS).

    o df.residual() now has a default method, used for classes
        "lm" and "glm".

    o New argument `cacheOK' to download.file() to request cache

        All methods for download.file() do tilde-expansion on the path

        The internal download.file() etc now allow URLs of the form
        ftp://user@foo.bar/ and ftp://user:pass@foo.bar/

    o duplicated() and unique() are now generic functions with
        methods for data frames (as well as atomic vectors).

    o factanal() and princomp() use napredict() on their scores, so
        na.action = na.exclude is supported.

    o Function getNativeSymbolInfo() returns details about a native
        routine, potentially including its address, the library in
        which it is located, the interface by which it can be called
        and the number of parameters.

    o Functions such as help() which perform library or package index
        searches now use NULL as default for their `lib.loc' argument so
        that missingness can be propagated more easily. The default
        corresponds to all currently known libraries as before.

    o Added function file.rename().

    o hist.default() allows `breaks' to specify a rule to choose the
        number of classes, and rules "Sturges" (the previous default),
        "Scott" and "FD" (Freedman-Diaconis) are supplied (based on
        package MASS).

    o Function identical(), a fast and reliable way to test for exact
        equality of two objects.

    o New generic function is.na<-(), from S4. This is by default
        equivalent to x[value] <- NA but may differ, e.g. for factors
        where "NA" is a level.

    o is.xxx reached through do_is are now generic.

    o La.eigen() and La.svd() have new default methods to use later
        (and often much faster) LAPACK routines. The difference
        is most noticeable on systems with optimized BLAS libraries.

    o length() is now generic.

    o New function .libPaths() for getting or setting the paths to the
        library trees R knows about. This is still stored in .lib.loc,
        which however should no longer be accessed directly.

    o Using lm/glm/... with `data' a matrix rather than a data frame
        now gives a specific error message.

    o loess(), lqs(), nls() and ppr() use the standard NA-handling
        and so support na.action = na.exclude.

    o mahalanobis() now has a `tol' argument to be passed to solve().

    o mean() has `data frame' method applying mean column-by-column.
        When applied to non-numeric data mean() now returns NA rather
        than a confusing error message (for compatibility with S4).
        Logicals are still coerced to numeric.

    o The formula interface to mosaicplot() now allows a contingency
        table as data argument.

    o new.env() is now internal and allows you to set hashing. Also,
        parent.env() and parent.env<-() are included to provide direct
        access to setting and retrieving environments.

    o Function nsl() to look up IP addresses of hosts: intended as
        a way to test for internet connectivity.

    o Ops(), cbind(), diff() and na.omit() methods for time series
        objects moved from package ts to package base.

    o New option `download.file.method' can be used to set the
        default method for download.file() and functions which use it
        such as update.packages().

    o order() and sort.list() now implement na.last = FALSE, NA.

    o Started work on new package management system: packageStatus()
        and friends.

    o page() has a new `method' argument allowing `method = print'.

    o png(), jpeg() and bmp() devices now have a `bg' argument to
        set the background color: useful to set "transparent" on png().

    o Changes to the postscript() device:

        - The symbol font can now be set on a postscript() device, and
          support has been added for using Computer Modern type-1
          fonts (including for symbols). (Contributed by Brian D'Urso.)

        - There is now support for URW font families: this will give
          access to more characters and more appropriate metrics on
          PostScript devices using URW fonts (such as ghostscript).

        - %%IncludeResource comments have been added to the output.
          (Contributed by Brian D'Urso.)

    o predict.ppr() now predicts on `newdata' containing NAs.

    o princomp() now has a formula interface.

    o readChar() now returns what is available if fewer characters
        than requested are on the file.

    o readline() allows up to 256 chars for the prompt.

    o read.table(), scan() and count.fields() have a new argument
        `comment.char', default `#', that can be used to start
        comments on a line.

    o New function reg.finalizer() to provide R interface to

    o reshape() extends reshapeLong, reshapeWide, which are deprecated.

    o rle() now returns a classed object, has a print method and
        an inverse.

    o Changes to save() and friends:

        - save() now takes an envir argument for specifying where
          items to be saved are to be found.

        - A new default format for saved workspaces has been
          introduced. This format provides support for some new
          internal data types, produces smaller save files when saving
          code, and provides a basis for a more flexible serialization

        - Modified `save' internals to improve performance when saving
          large collections of code.

        - save() and save.image() now take a `version' argument to
          specify the workspace file-format version to use. The
          version used from R 0.99.0 to 1.3.1 is version 1. The new
          default format is version 2. load() can read a version 2
          saved workspace if it is compressed.

        - save() and save.image() now take a `compress' argument to
          specify that the saved image should be written using the zlib
          compression facilities.

        - save.image() now takes an argument `ascii'.

        - save.image() now takes an argument `safe'. If TRUE, the
          default, a temporary file is used for creating the saved
          workspace. The temporary file is renamed if the save
          succeeds. This preserves an existing workspace if the save
          fails, but at the cost of using extra disk space during the

        - save.image() default arguments can be specified in the
          `save.image.defaults' option. These specifications are used
          when save.image() is called from q() or GUI analogs.

    o scan() allows unlimited (by R) lengths of input lines, instead
        of a limit of 8190 chars.

    o smooth.spline() has a new `control.spar' argument and returns
        `lambda' besides `spar'. spar <= 0 is now valid and allows
        to go more closely towards interpolation (lambda -> 0) than before.
        This also fixes smooth.spline() behavior for "df ~= n - 2". Better
        error messages in several situations.

        Note that spar = 0 is no longer the default and no longer entails

    o stars() has been enhanced; new `mar' argument uses smaller
        mar(gins) by default; further `nrow and `ncol' as S-PLUS,
        `frame.plot', `flip.labels', `lty' and explicit `main', `sub',
        `xlab' and `ylab'. Note that `colors' has been replaced by
        `col.segments' and there's a new `col.stars'.

        stars() now returns the locations invisibly.

    o step() is now closer to stepAIC() and so handles a wider range
        of objects (but stepAIC [in MASS] is still more powerful).

    o symbols() now has automatic xlab and ylab and a main argument
        which eliminates an incorrect warning. It better checks wrongly
        scaled arguments.

    o Sys.setlocale() now issues a warning if it fails.

    o An enhanced function type.convert() is now a documented
        function, rather than just internal to read.table().

    o warning() allows multiple arguments, following S4's style.

    o New function with() for evaluating expressions in environments
        constructed from data.

    o Unix x11() devices can now have a canvas color set, which can
        help to distinguish plotting "white" from plotting

    o On Unix, X11(), png() and jpeg() now give informative warnings
        if they fail to open the device.

    o The startup processing now interprets escapes in the values of
        environment variables set in R_HOME/etc/Renviron in a similar
        way to most shells.

    o The operator "=" is now allowed as an assignment
        operator in the grammar, for consistency with other languages,
        including recent versions of S-Plus. Assignments with "=" are
        basically allowed only at top-level and in braced or
        parenthesized expressions, to make famous errors such as
        "if(x=0) 1 else 2" illegal in the grammar.
        (There is a plan to gradually eliminate the underscore as an
        assignment in future versions of R.)

    o Finalizers can be registered to be run on system exit for both
        reachable and unreachable objects.

    o integer addition, subtraction, and multiplication now return NA's
        on overflow and issue a warning.

    o Printing factors with both level "NA" and missing values
        uses `<NA>' for the missing values to distinguish them.

    o Added an experimental interface for locking environments and
        individual bindings. Also added support for "active bindings"
        that link a variable to a function (useful for example for linking
        an R variable to an internal C global).

    o GNOME interface now has separate colours for input and output
        text (like the windows GUI). These can be modified via the
        properties dialogue.

    o Output from the GNOME console is block buffered for increased

    o The GNOME console inherits standard emacs-style keyboard
        shortcuts from the GtkText widget for cursor motion, editing
        and selection. These have been modified to allow for the prompt
        at the beginning of the command line.

    o One can register R functions and C routines to be called at the
        end of the successful evaluation of each top-level expression,
        for example to perform auto-saves, update displays, etc. See
        addTaskCallback() and taskCallbackManager(). See


    o .Alias has been removed from all R sources and deprecated.

    o reshapeLong(), reshapeWide() are deprecated in favour of reshape().

    o Previously deprecated functions read.table.url(), scan.url(),
        source.url(), httpclient() and parse.dcf() are defunct.
        Method "socket" for download.file() no longer exists.


    o `Writing R Extensions' has a new chapter on generic/method


    o New package `tools' for package development and administration
        tools, containing the QA tools checkFF(), codoc() and undoc()
        previously in package base, as well as the following new ones:

        - checkAssignFuns() for checking whether the final argument of
           assignment functions in a package is named `value'.

        - checkDocArgs() for checking whether all arguments shown in
           \usage of Rd files are documented in the corresponding

        - checkMethods() for checking whether all methods defined in a
           package have all arguments of their generic.

        - checkTnF() for finding expressions containing the symbols `T'
           and `F'.

    o R CMD Rd2dvi has more convenient defaults for its output file.

    o R CMD check now also fully checks the Depends field in the
        package DESCRIPTION file. It also tests for syntax errors in
        the R code, whether all methods in the code have all arguments
        of the corresponding generic, for arguments shown in \usage but
        not documented in \arguments, and whether assignment functions
        have their final argument named `value'.


    o arraySubscript and vectorSubscript are now available to package
        users. All "array-like" packages can use a standard method for
        calculating subscripts.

    o The C routine type2symbol, similar to type2str, returns a symbol
        corresponding to the type supplied as an argument.

    o The macro SHLIB_EXT now includes `.', e.g. ".so" or ".dll",
        since the Mac uses "Lib" without a `.'.

    o New Fortran entry points rwarn() and rexit() for warnings and
        error exits from compiled Fortran code.

    o A new serialization mechanism is available that can be used to
        serialize R objects to connections or to strings. This
        mechanism is used for the version 2 save format. For now,
        only an internal C interface is available.

    o R_tryEval() added for evaluating expressions from C code with
        errors handled but guaranteed to return to the calling C
        routine. This is used in embedding R in other applications and

    o Support for attach()'ing user-defined tables of variables
        is available and accessed via the RObjectTables package
        currently at http://www.omegahat.org/RObjectTables.


    o Fixed share/perl/massage-examples.pl to detect instances of
        par() at the very start of a line.

    o Fixed Pearson residuals for glms with non-canonical
        link.(PR#1123). Fixed them again for weights (PR#1175).

    o Fixed an inconsistency in the evaluation context for on.exit
        expressions between explicit calls to `return' and falling off
        the end returns.

    o The code in model.matrix.default() handling contrasts was
        assuming a response was present, and so without a response was
        failing to record the contrasts for the first variable if it
        was a factor.

    o diffinv() could get the time base wrong in some cases.

    o file.append() was opening all files in text mode: mattered
        on Windows and classic Macintosh. (PR#1085)

    o f[] <- g now works for factor f.

    o substr<-() was misbehaving if the replacement was too short.

    o The version of `packages.html' generated when building R or
        installing packages had an incorrect link to the style sheet.
        The version used by help.start() was correct. (PR#1090)

    o rowsum() now gives character (not factor codes) as rownames.

    o plot.POSIX[cl]t now respect the `xaxt' parameter.

    o It is now possible to predict from an intercept-only model:
        previously model.matrix.default() objected to a 0-column
        model frame.

    o c.POSIXct was not setting the right classes in 1.3.x.

    o cor(*, use = "all.obs") <= 1 is now guaranteed which ensures
        that sqrt(1 - r^2) is always ok in cor.test(). (PR#1099)

    o anova.glm() had a missing drop=FALSE and so failed for some
        intercept-less models.

    o predict.arima0() now accepts vector as well as matrix
        `newxreg' arguments.

    o cbind(d,f) now works for 0-column dataframes. This fixes PR#1102.

    o plot(ts(0:99), log = "y") now works

    o method "gnudoit" of bug.report() was incorrectly documented as
        "gnuclient" (PR#1108)

    o saving with ascii=TRUE mangled backslashes. (PR#1115)

    o frac(,) {and others} now adds a gap appropriately. (PR#1101)

    o logLik.lm() now uses the correct "df" (nlme legacy code).

    o closeAllConnections() works again, and closes all sink() diversions.

    o sink(type="message") works again.

    o sink.number was (accidentally) returning the result invisibly.

    o as.POSIXct("NA") (or ..lt) now work; hence, merge(*, all=TRUE) now
        works with dataframes containing POSIXt date columns.

    o integer(2^30+1) and similar ones do not segfault anymore but duly
        report allocation errors.

    o seq(0, 0, 1) now works (PR#1133).

    o reshapeWide() got it wrong if the "i" factor was not sorted (the
        function is now deprecated since reshape() is there, but the bug
        still needed fixing...)

    o PR#757 was fixed incorrectly, causing improper subsetting of
        pch etc. in plot.formula().

    o library() no longer removes environments of functions that are
        not defined in the top-level package scope. Also, packages
        loaded by require() when sourcing package code are now visible
        in the remaining source evaluations.

    o names(d) <- v now works (again) for "dist" objects d. (PR#1129)

    o Workarounds for problems with incompletely specified date-times
        in strptime() which were seen only on glibc-based systems

    o promax() was returning the wrong rotation matrix. (PR#1146)

    o The [pqr]signrank and [pqr]wilcox functions failed to check that
        memory has been allocated (PR#1149), and had (often large)
        memory leaks if interrupted. They now can be interrupted on
        Windows and MacOS and don't leak memory.

    o range(numeric(0)) is now c(NA, NA) not NA.

    o round(x, digits) for digits <= 0 always gives an integral
        answer. Previously it might not due to rounding errors in
        fround. (PR#1138/9)

    o Several memory leaks on interrupting functions have been
        circumvented. Functions lqs() and mve() can now be
        interrupted on Windows and MacOS.

    o image() was finding incorrect breakpoints from
        irregularly-spaced midpoints. (PR#1160)

    o Use fuzz in the 2-sample Kolmogorov-Smirnov test in package
        ctest to avoid rounding errors (PR#1004, follow-up).

    o Use exact Hodges-Lehmann estimators for the Wilcoxon tests in
        package ctest (PR#1150).

    o Arithmetic which coerced types could lose the class
        information, for example `table - real' had a class attribute
        but was not treated as a classed object.

    o Internal ftp client could crash R under error conditions such
        as failing to parse the URL.

    o Internal clipping code for circles could attempt to allocate
        a vector of length -1 (related to PR#1174)

    o The hash function used internally in match(), unique() and
        duplicated() was very inefficient for integers stored as
        numeric, on little-endian chips. It was failing to hash the
        imaginary part of complex numbers.

    o fifo() no longer tries to truncate on opening in modes
        including "w". (Caused the fifo example to fail on HP-UX.)

    o Output over 1024 characters was discarded from the GNOME

    o rug() now correctly warns about clipped values also for logarithmic
        axes and has a `quiet' argument for suppressing these (PR#1188).

    o model.matrix.default was not handling correctly contrasts.arg
        which did not supply a full set of contrasts (PR#1187).

    o The `width' argument of density() was only compatible with S
        for a Gaussian kernel: now it is compatible in all cases.

    o The rbinom() C code had a transcription error from the original
        Fortran which led to a small deviation from the intended
        distribution. (PR#1190)

    o pt(t, , ncp=0) was wrong if t was +/-Inf.

    o Subsetting grouping factors gave incorrect degrees of freedom
        for some tests in package ctests. (PR#1124)

    o writeBin() had a memory leak.

    o qbeta(0.25, 0.143891, 0.05) was (incorrectly) 3e-308. (PR#1201)

    o Fixed alignment problem in ppr.f on Irix. (PR#1002, 1026)

    o glm() failed on null binomial models. (PR#1216)

    o La.svd() with nu = 0 or nv = 0 could fail as the matrix passed
        to DGESVD was not of dimension at least one (it was a vector).

    o Rownames in xcoef and ycoef of cancor() were wrong if x or y
        was rank-deficient.

    o lqs() could give warnings if there was an exact fit. (PR#1184)

    o aov() didn't find free-floating variables for Error() terms when
        called from inside another function

    o write.table() failed if asked to quote a numerical matrix with
        no row names. (PR#1219)

    o rlnorm( *, *, sd=0) now returns the mean,
             rnbinom(*, *, prob=1) gives 0, (PR#1218).

   O__  ---- Peter Dalgaard             Blegdamsvej 3  
  c/ /'_ --- Dept. of Biostatistics     2200 Cph. N   
 (*) \(*) -- University of Copenhagen   Denmark      Ph: (+45) 35327918
~~~~~~~~~~ - (p.dalgaard@biostat.ku.dk)             FAX: (+45) 35327907
r-announce mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-announce-request@stat.math.ethz.ch

About this list Date view Thread view Subject view Author view Attachment view

This archive was generated by hypermail 2.1.3 : Thu 17 Jan 2002 - 11:16:02 EST