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

Henrik Bengtsson hb at biostat.ucsf.edu
Mon Apr 7 06:33:15 CEST 2014


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?

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())
                 }
             }
         }

/Henrik



More information about the R-devel mailing list