You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让R语言警告信息显示调用函数而非辅助警告函数名?

解决R中警告信息显示调用者函数名的问题

你可以通过修改mywarn函数,利用warning()的call参数指定警告信息的调用上下文,让它指向调用mywarn的上层函数。

修改后的辅助警告函数

mywarn <- function() {
  # 获取上层调用的函数调用信息
  caller_call <- sys.call(-1)
  warning("I warn you", call = caller_call)
}

测试调用

在myfun中调用修改后的mywarn:

myfun <- function(x) {
  x <- x^2
  mywarn()
  x
}

myfun(10)

输出的警告信息会变为:

Warning message:
In myfun(10) : I warn you

原理说明

  • sys.call(-1)用于获取当前函数(mywarn)的上层调用表达式,也就是触发mywarn的那行代码对应的调用信息。
  • 将该值传入warning()的call参数,就能让警告信息显示上层调用函数的名称,而非mywarn本身。

内容的提问来源于stack exchange,提问作者Karolis Koncevičius

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 22:04:53