[Rd] attach() outputs messages to stdout - should it be stderr?

Martin Maechler maechler at stat.math.ethz.ch
Wed Apr 9 08:58:50 CEST 2014


>>>>> Henrik Bengtsson <hb at biostat.ucsf.edu>
>>>>>     on Mon, 7 Apr 2014 08:20:27 -0700 writes:

    > On Mon, Apr 7, 2014 at 1:40 AM, Martin Maechler
    > <maechler at stat.math.ethz.ch> wrote:
    >>>>>>> Henrik Bengtsson <hb at biostat.ucsf.edu> on Sun, 6 Apr
    >>>>>>> 2014 21:33:15 -0700 writes:
    >> 
    >> > Contrary to other functions in 'base', attach() output
    >> > messages to stdout instead of stdout, e.g.
    >> 
    >> >> a <- 1 capture.output(attach(list(a=1))) > [1] "The
    >> following object is masked _by_ .GlobalEnv:" > [2] "" >
    >> [3] " a"
    >> 
    >> > Shouldn't this message go to stderr?
    >> 
    >> well, it this is changed... it should be changed to use
    >> message() really -- as library() does.
    >> 
    >> Then, it will not only go to stderr, but also be
    >> something you can e.g. use suppressMessages( . )  with.
    >> 
    >> I tend to agree to change this from cat() to message(),
    >> and will do so after a bit of waiting..

    > Thanks - sounds good.

    > I proposed cat(..., file=stderr()) rather that message(),
    > because I saw it was used in several other place in 'base'
    > - left overs from a earlier era?

partly, probably.  In principle you / we should not only look in
'base' but all "base packages", i.e. all in

       installed.packages(priority = "base")

Yesterday, I have committed the change -- to use  message() --
to R-devel, i.e., of course too late to make it into 
R 3.1.0, released tomorrow.

Martin



More information about the R-devel mailing list