Я бы хотел настроить префикс R для распечатки предупреждений.
Стандартная настройка R для warning.expression равна NULL и работает таким образом
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
Если в Rscript за короткое время (или в функции / закрытии?) Встречается несколько предупреждений, вы получите что-то вроде
Warning messages:
1. this is a test of the warning system
2. second message
Однако настройка текста предупреждения не представляется приемлемой (без залипания сообщения в вызове warning()
). Например, если я заменю warning.expression
следующим образом:
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"
при непосредственном использовании mywarn()
:
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"
Самое близкое, что я мог найти к объяснению warning.expression
, было из списка рассылки 13 лет назад .
Наибольшую помощь в этой теме внесло сообщение Барри Роулингсона , в котором говорится о неполной реализации в источнике C командой R.
Недостаточно самой документации R.
warning.expression
: выражение кода R, которое вызывается, если предупреждение
генерируется, заменяя стандартное сообщение. Если не ноль, это называется
независимо от значения опции warn.