R `options(warning.expression=)` replacement functions unconditionally drop args
I'd like to customize R's prefix for printing-out warnings.
R's standard setting for warning.expression is NULL and works thusly
options(warning.expression=NULL)
warning("this is a test of the warning system")
Warning message:
this is a test of the warning system
warning(msg="this is a test of the warning system")
Warning message:
this is a test of the warning system
warning(xkqp="this is a test of the warning system")
Warning message:
this is a test of the warning system
If, within an Rscript, multiple warnings are encountered within a short period of time (or within a function/closure?), you get something like
Warning messages:
1. this is a test of the warning system
2. second message
However, customization of the warning text doesn't seem customable (without clobbering the message in the warning()
call). For example, if I replace warning.expression
as follows:
mywarn<-function(...) {
print(paste(
names(substitute(alist(...))),
force(substitute(alist(...))),
sep=" = ",
collapse=";"
))
}
options(warning.expression=quote(mywarn(...)))
warning("this is a test of the warning system")
[1] " = alist;muffleWarning = function() NULL"
warning(msg="this is a test of the warning system")
[1] " = alist;muffleWarning = function() NULL"
whereas using mywarn()
directly:
mywarn("this is a test of the warning system", named_parameter="see")
[1] " = alist; = this is a test of the warning system;named_parameter = see"
The closest thing I could find to an explanation of warning.expression
was from a mailing list 13 years ago.
The most help in that thread came in a post by Barry Rowlingson suggesting a incomplete implementation in the C source by the R team.
The R documentation itself is insufficient.
warning.expression
: an R code expression to be called if a warning is
generated, replacing the standard message. If non-null it is called
irrespective of the value of option warn.
r
add a comment |
I'd like to customize R's prefix for printing-out warnings.
R's standard setting for warning.expression is NULL and works thusly
options(warning.expression=NULL)
warning("this is a test of the warning system")
Warning message:
this is a test of the warning system
warning(msg="this is a test of the warning system")
Warning message:
this is a test of the warning system
warning(xkqp="this is a test of the warning system")
Warning message:
this is a test of the warning system
If, within an Rscript, multiple warnings are encountered within a short period of time (or within a function/closure?), you get something like
Warning messages:
1. this is a test of the warning system
2. second message
However, customization of the warning text doesn't seem customable (without clobbering the message in the warning()
call). For example, if I replace warning.expression
as follows:
mywarn<-function(...) {
print(paste(
names(substitute(alist(...))),
force(substitute(alist(...))),
sep=" = ",
collapse=";"
))
}
options(warning.expression=quote(mywarn(...)))
warning("this is a test of the warning system")
[1] " = alist;muffleWarning = function() NULL"
warning(msg="this is a test of the warning system")
[1] " = alist;muffleWarning = function() NULL"
whereas using mywarn()
directly:
mywarn("this is a test of the warning system", named_parameter="see")
[1] " = alist; = this is a test of the warning system;named_parameter = see"
The closest thing I could find to an explanation of warning.expression
was from a mailing list 13 years ago.
The most help in that thread came in a post by Barry Rowlingson suggesting a incomplete implementation in the C source by the R team.
The R documentation itself is insufficient.
warning.expression
: an R code expression to be called if a warning is
generated, replacing the standard message. If non-null it is called
irrespective of the value of option warn.
r
add a comment |
I'd like to customize R's prefix for printing-out warnings.
R's standard setting for warning.expression is NULL and works thusly
options(warning.expression=NULL)
warning("this is a test of the warning system")
Warning message:
this is a test of the warning system
warning(msg="this is a test of the warning system")
Warning message:
this is a test of the warning system
warning(xkqp="this is a test of the warning system")
Warning message:
this is a test of the warning system
If, within an Rscript, multiple warnings are encountered within a short period of time (or within a function/closure?), you get something like
Warning messages:
1. this is a test of the warning system
2. second message
However, customization of the warning text doesn't seem customable (without clobbering the message in the warning()
call). For example, if I replace warning.expression
as follows:
mywarn<-function(...) {
print(paste(
names(substitute(alist(...))),
force(substitute(alist(...))),
sep=" = ",
collapse=";"
))
}
options(warning.expression=quote(mywarn(...)))
warning("this is a test of the warning system")
[1] " = alist;muffleWarning = function() NULL"
warning(msg="this is a test of the warning system")
[1] " = alist;muffleWarning = function() NULL"
whereas using mywarn()
directly:
mywarn("this is a test of the warning system", named_parameter="see")
[1] " = alist; = this is a test of the warning system;named_parameter = see"
The closest thing I could find to an explanation of warning.expression
was from a mailing list 13 years ago.
The most help in that thread came in a post by Barry Rowlingson suggesting a incomplete implementation in the C source by the R team.
The R documentation itself is insufficient.
warning.expression
: an R code expression to be called if a warning is
generated, replacing the standard message. If non-null it is called
irrespective of the value of option warn.
r
I'd like to customize R's prefix for printing-out warnings.
R's standard setting for warning.expression is NULL and works thusly
options(warning.expression=NULL)
warning("this is a test of the warning system")
Warning message:
this is a test of the warning system
warning(msg="this is a test of the warning system")
Warning message:
this is a test of the warning system
warning(xkqp="this is a test of the warning system")
Warning message:
this is a test of the warning system
If, within an Rscript, multiple warnings are encountered within a short period of time (or within a function/closure?), you get something like
Warning messages:
1. this is a test of the warning system
2. second message
However, customization of the warning text doesn't seem customable (without clobbering the message in the warning()
call). For example, if I replace warning.expression
as follows:
mywarn<-function(...) {
print(paste(
names(substitute(alist(...))),
force(substitute(alist(...))),
sep=" = ",
collapse=";"
))
}
options(warning.expression=quote(mywarn(...)))
warning("this is a test of the warning system")
[1] " = alist;muffleWarning = function() NULL"
warning(msg="this is a test of the warning system")
[1] " = alist;muffleWarning = function() NULL"
whereas using mywarn()
directly:
mywarn("this is a test of the warning system", named_parameter="see")
[1] " = alist; = this is a test of the warning system;named_parameter = see"
The closest thing I could find to an explanation of warning.expression
was from a mailing list 13 years ago.
The most help in that thread came in a post by Barry Rowlingson suggesting a incomplete implementation in the C source by the R team.
The R documentation itself is insufficient.
warning.expression
: an R code expression to be called if a warning is
generated, replacing the standard message. If non-null it is called
irrespective of the value of option warn.
r
r
edited Jan 4 at 23:25
mpag
asked Jan 3 at 0:22


mpagmpag
211214
211214
add a comment |
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54014880%2fr-optionswarning-expression-non-null-replacement-functions-unconditionally%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54014880%2fr-optionswarning-expression-non-null-replacement-functions-unconditionally%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown