[Rd] attach() outputs messages to stdout - should it be stderr?
maechler at stat.math.ethz.ch
Mon Apr 7 10:40:11 CEST 2014
>>>>> 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)))
>  "The following object is masked _by_ .GlobalEnv:"
>  ""
>  " 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..
> Here's a patch for the local function checkConflicts() of
> base::attach(), cf. ditto for base::library() that outputs
> to stderr:
> Index: library/base/R/attach.R
> --- library/base/R/attach.R (revision 65344)
> +++ library/base/R/attach.R (working copy)
> @@ -73,7 +73,7 @@
> "The following objects
> are masked %s %s:\n\n%s\n"),
> if (i < db.pos) "_by_" else "from",
> pkg, paste(objs, collapse="\n"))
> - cat(msg)
> + cat(msg, file = stderr())
More information about the R-devel