[Rd] capabilities() and non-catchable messages
Henrik Bengtsson
hb at maths.lth.se
Mon Jun 20 12:18:22 CEST 2005
Just for the record (not a request for fix) and an ad hoc workaround if
anyone needs it:
REASON:
Running an R script as a plugin on a remote Suse Linux 8.2 with R v2.1.0
(2005-04-18), I have noticed that capabilities() generates (to standard
error)
Xlib: connection to "base:0.0" refused by server
Xlib: Client is not authorized to connect to Server
which cannot be caught by tryCatch();
tryCatch({
print(capabilities());
}, condition=function(c) {
cat("Condition caught:\n");
str(c);
})
because it is not a 'condition' (error or warning).
CONTEXT:
Since source() calls capabilities("iconv") this messages always show up.
My R plugin loads custom code using source() and since the standard
error from the plugin is checked for messages, the host system
interprets this as if something problematic has occured.
WORKAROUND:
The workaround that I use now is to redefine capabilities() temporarily
(since I do not need "iconv" support):
orgCapabilities <- base::capabilities;
basePos <- which(search() == "package:base"));
assign("capabilities", function(...) FALSE, pos=basePos);
source(<my file>)
basePos <- which(search() == "package:base"));
assign("capabilities", orgCapabilities, pos=basePos);
rm(orgCapabilities)
Cheers
Henrik
More information about the R-devel
mailing list