我试过以下代码:

x <- NULL
tryCatch(
  x <- sqrt(-1),
  warning = function(cond) print(paste("Ignore: ", conditionMessage(cond)))
)
# [1] "Ignore:  NaNs produced"

预期输出:

# [1] "Ignore:  NaNs produced"
x
#NaN

请注意,x仍然是NULL.未分配任何值.

  • 我试了x <<-次,但不管用.
  • 我想展示被忽略的警告,而不是仅仅压制警告.suppressWarnings(x <- sqrt(-1))后我不知道如何恢复警告信息.

推荐答案

当你tryCatch(.., warning=)时,警告第一次发生时,表达式被中断,控制永远不会返回给它.为了"忽略"警告,你需要withCallingHandlersinvokeRestart("mufflewarning").

withCallingHandlers(
  x <- sqrt(-1),
  warning = function(w) invokeRestart("muffleWarning"))
x
# [1] NaN

研究错误/警告条件的一个好参考是https://adv-r.hadley.nz/conditions.html.

我认为在两种情况下,使用"muffleWarning"而不是suppressWarnings是合理的:

  • 当我想 suppress specific warnings only,并允许所有其他emits ;这是目前为止我的大多数用例;以及
  • 当您因为警告而想要更改某些内容时;我没有一个明确的例子来说明如何使用它,因为它是100%与上下文相关的.

R相关问答推荐

将模拟变量乘以多个观测结果中的模拟变量

更改绘图上的x轴断点,而不影响风险?

使用R中相同值创建分组观测指标

任意列的欧几里得距离

如何使用按钮切换轨迹?

为什么横向页面会导致officeverse中的页码/节头/页脚出现问题?

用相同方法得到不同函数的ROC最优截断值

将数据集中的值增加到当前包含的最大值

如何在R中合并两个基准点?

提取具有连续零值的行,如果它们前面有R中的有效值

我如何才能找到FAMILY=POISSON(LINK=&Q;LOG&Q;)中的模型预测指定值的日期?

使用data.table::fcase()而不是dplyr::case_When()时保持值

仅 Select 超过9行的CSV文件

如何指定我的函数应该查找哪个引用表?

如果COLSUM为>;0,则COLNAME为向量

如何在R中改变fviz_pca_biplot中圆的边界线的 colored颜色 ?

通过R:文件名未正确写入[已解决]将.nc文件转换和导出为.tif文件

具有自定义仓位限制和计数的GGPLATE直方图

如何将图例文本添加到图例符号中

使用显式二元谓词子集化sfc对象时出错