如何在 R 中使用 `tryCatch` 正确记录警告和错误?

2024-01-27

我有一个函数fun通常会产生警告,偶尔会引发错误。我正在尝试使用tryCatch记录警告和错误,如建议的那样这个答案 https://stackoverflow.com/a/57658252/5252007。如何同时存储警告和错误?

这是一个最小的设置:

# Function for warnings, errors.
fun <- function(i) {
    # Print warnings as they come in.
    options(warn = 1)

    # Issue warning.
    warning(paste("Warn.", i))

    # Stop.
    if(i == 3) { stop(paste("Err.", i)) }

    # Restore warning default behaviour.
    options(warn = 0)
}

评估fun with tryCatch:

# Storage
warns = list()
errs = list()

# Try catch the function and log the warnings/ errors.
for (i in 1:4) {
    tryCatch(fun(i),
        warning = function(w) warns[[i]] <<- w,
        error = function(e) errs[[i]] <<- e
    )
}

但是,输出显示错误尚未存储。

warns
# [[1]]
# <simpleWarning in fun(i): Warn. 1>
# 
# [[2]]
# <simpleWarning in fun(i): Warn. 2>
# 
# [[3]]
# <simpleWarning in fun(i): Warn. 3>
# 
# [[4]]
# <simpleWarning in fun(i): Warn. 4>


errs
# list()

基于Ronak's有用的评论和以下问题如何将警告和错误保存为函数的输出? https://stackoverflow.com/q/4948361/5252007,代码可以简化如下:

# Storage.
warns = list()
errs = list()


# Example function.
fun <- function(i) {
    # Issue warning.
    warning(paste("Warn.", i))

    # Stop.
    if(i == 3) { stop(paste("Err.", i)) }
}


# Evaluate `fun`.
for (i in 1:4) {
    tryCatch(withCallingHandlers(
        expr = fun(i), 

        # Handle the warnings.
        warning = function(w) {
            warns <<- c(warns, list(w))
            invokeRestart("muffleWarning")
        }), 

        # Handle the errors.
        error = function(e) {
            errs <<- c(errs, list(e))
        }
    )
}

输出如下所示:

warns

# [[1]]
# <simpleWarning in fun(i): Warn. 1>
# 
# [[2]]
# <simpleWarning in fun(i): Warn. 2>
# 
# [[3]]
# <simpleWarning in fun(i): Warn. 3>
# 
# [[4]]
# <simpleWarning in fun(i): Warn. 4>


errs

# [[1]]
# <simpleError in fun(i): Err. 3>

更多信息和链接在question https://stackoverflow.com/q/4948361/5252007上面链接了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 R 中使用 `tryCatch` 正确记录警告和错误? 的相关文章

  • par(mfrow=c(1,2)) 不显示并排密度图[重复]

    这个问题在这里已经有答案了 par mfrow c 1 2 plot 1 12 log y plot 1 2 xaxs i 然而 当我尝试做并排密度图时 图会单独输出 load the stud recs dataset library U
  • R中添加水印

    我在用magickR中的库 我想在一些图片上添加水印 I used image annotate功能如下 img lt image read C Users Maydin Desktop manzara png image annotate
  • 使用 R Shiny 从 XLConnect 下载 Excel 文件

    有没有人尝试过使用 R Shiny 中的下载处理程序通过 XLConnect 下载新创建的 Excel 文件 在 ui R 中有一行不起眼的行 downloadButton downloadData Download 在 server R
  • 如何在R中计算文本中的句子数?

    我使用 R 将文本读入readChar 功能 我的目的是测试文本句子中字母 a 出现次数与字母 b 出现次数一样多的假设 我最近发现了 stringr 包 它帮助我对文本做很多有用的事情 例如计算字符数以及整个文本中每个字母出现的总数 现在
  • 将 Instagram/youtube 嵌入 Shiny R 应用程序

    我想通过点击图表来播放 Instagram 或 Youtube 视频 例如显示异常值等 到目前为止 明确告诉 Shiny 视频内容是有效的 require shiny require ggplot2 data df lt data fram
  • 计算例如具有多列 data.frames 的列表中的平均值

    我有几个 data frames 的列表 每个 data frame 有几列 通过使用mean mylist first dataframe a我可以得到这个 data frame 中 a 的平均值 但是我不知道如何计算列表中存储的所有 d
  • 如何在 ggplot 中保持配色方案,同时删除每个图中未使用的级别?

    我想比较一个图中的数据的一些子组和另一图中的一些其他子组 如果我绘制一个图 其中绘制了所有子组 那么这个数字将是巨大的 并且每个单独的比较都会变得困难 我认为如果给定的子组在所有图中都具有相同的颜色 这对读者来说会更有意义 这是我尝试过的两
  • numpy.histogram 的 hist 维度,密度 = True

    假设我有这个数组 A array 0 0019879 0 00172861 0 00527226 0 00639585 0 00242005 0 00717373 0 00371651 0 00164218 0 00034572 0 008
  • kableExtra 中的 row_spec() 函数不会在 html 输出中创建水平线

    我想在 kableextra 表中的某一行下方添加一条水平线 row spec 函数的参数 hline after 应该在行下方添加水平线 row spec 文档 https www rdocumentation org packages
  • 如何在for循环中引用变量?

    我正在循环访问不同的 data tables 和 data table 中的变量 但我在引用内部变量时遇到问题for loop dt1 lt data table a1 c 1 2 3 a2 c 4 5 2 dt2 lt data tabl
  • 如何从 Fortran 调用 R 函数?

    根据http gallery rcpp org articles r function from c http gallery rcpp org articles r function from c Rcpp 允许用户从 C 调用 R 函数
  • 正则表达式字符串中第一个和最后一个非点的位置

    我希望找到字符串的第一个和最后一个非点元素的位置 理想情况下我想这样做regex在基地R 我已经写过R解决问题的代码 不过 我对一个感兴趣regex解决方案 感谢您的任何建议 这是一个示例数据集和R代码以获得所需的结果 此代码拆分字符串并使
  • 使用 purrr 迭代替换数据帧列中的字符串

    我想用purrr使用以下命令在数据框列上迭代运行多个字符串替换gsub 功能 这是示例数据框 df lt data frame Year 2019 Text c rep a aa 5 rep a bb 3 rep a cc 2 gt df
  • 如何使用 usmap 标记数字而不是名称?

    我知道 usmap 有一个选项label in plot usmap 我想标记一些数字 而不是状态名称 我想 usmap 中应该有与州质心坐标相关的数据 但我不知道如何找到它 如果我能得到 坐标然后我可以用它来标记数字geom text 这
  • Dendextend:关于如何根据定义的组为树状图的标签着色

    我正在尝试使用一个名为 dendextend 的很棒的 R 包来绘制树状图并根据一组先前定义的组为其分支和标签着色 我已阅读您在 Stack Overflow 中的答案以及 dendextend vignette 的常见问题解答 但我仍然不
  • 尝试读取 CSV 文件时出现“无法识别的字符串转义”

    我正在尝试导入一个 csv文件 以便我可以观看此视频 R ggplot2 图形直方图 http www youtube com watch v 47kWynt3b6M 我安装了所有正确的软件包 包括ggplot以及相关的包 视频中的第一个说
  • 在 R 格子包中微调点图

    我正在尝试为不同的数据集和不同的算法绘制一堆 ROC 区域 我有三个变量 方案 指定所使用的算法 数据集 是正在测试算法的数据集 以及 Area under ROC 我正在 R 中使用lattice库 命令如下 点图 方案 Area und
  • 将每列的值乘以 R 中另一个 data.frame 中的权重

    我有两个data frames df and weights 代码如下 df看起来像这样 id a b d EE f 1 this 0 23421153 0 02324956 0 5457353 0 73068586 0 5642554 2
  • 朴素贝叶斯分类器仅基于先验概率做出决策

    我试图根据推文的情绪将推文分为三类 买入 持有 卖出 我正在使用 R 和包 e1071 我有两个数据框 一个训练集和一组需要预测情绪的新推文 训练集数据框 text sentiment this stock is a good buy Bu
  • 相当于 min() 的 rowMeans()

    我在 R 邮件列表上多次看到这个问题 但仍然找不到满意的答案 假设我有一个矩阵m m lt matrix rnorm 10000000 ncol 10 我可以通过以下方式获得每行的平均值 system time rowMeans m use

随机推荐

  • C 中的 HTTP 堆栈

    有没有用C实现的HTTP协议栈 提前致谢 更新 寻找客户端实现 你没有说你是在寻找客户端还是服务器 但很快谷歌就出现了libmicrohttpd http www gnu org software libmicrohttpd 用于在您的应用
  • 如何使用 Google 云端硬盘 API 密钥从 Android 应用程序访问云端硬盘内容?

    我无法访问 Google 云端硬盘 我在 Google API 控制台中创建了一个 API KEY 并启用了 Google Drive API 和 SDK 我在代码中的哪里设置 API KEY 驱动器生成器没有setJsonHttpRequ
  • cassandra中的主键是唯一的吗?

    这可能有点蹩脚 但在 cassandra 中主键是唯一的吗 例如下表中 CREATE TABLE users name text surname text age int adress text PRIMARY KEY name surna
  • .Net core 中 Json() 的小写属性名称

    有类 ClientViewModel public class Result public long PKID get set public string Name get set 并有 post 方法返回此模型 HttpPost publ
  • 如何让一个函数每 10 分钟在服务中运行一次?

    我有一个正在运行的 Windows 服务 在其中我想每隔几分钟运行一个函数 我找到了一些代码 但它似乎不起作用 我有一个记录器 它似乎没有进入过timer Elapsed 函数 protected override void OnStart
  • 阻止加载混合活动内容

    我在控制台中收到这些警告 但我的脚本无法正常工作 阻止加载混合活动内容 http code jquery com ui 1 10 3 themes smoothness jquery ui css http code jquery com
  • 如何获取 Flutter App 的编译/构建日期?

    我知道如何使用获取版本包信息 https pub dartlang org packages package info 但是如何在 ios 和 android 上获取运行时的构建时间戳 您可以使用构建 shell 脚本来创建 更新 Dart
  • 从 SetUpFixture 将参数传递给 TestFixture OneTimeSetUp

    我目前正在使用 C 构建一个自动化项目 nunit和 Selenium 我试图有一个安装类 它将在任何之前初始化 selenium webdriverTestFixture将运行并在所有这些都结束后尝试从TestFixture每一个Test
  • 无法理解 freeCodeCamp 中的 JS 递归倒计时函数

    所以 我已经明白了ideaJavaScript 中的递归 有一个功能是loops itself直到达到base条件 此时它停止并且返回最终结果 但是当我将其应用于尝试将其应用于的实际语法时 我有点头疼创建数组 让我们使用freeCodeCa
  • 更改 ApacheDS 中的默认管理员密码

    我是 ApacheDS 新手 我正在使用 apacheds 2 0 0 M17 管理员的默认密码是秘密的 有谁知道我可以在哪里将值更改为其他值 Inside apacheds instances default conf config ld
  • 找不到为 MVC 5 DropDownListFor 添加占位符的方法

    我尝试在网络上搜索并用我的代码尝试不同的东西 我知道如何为文本框添加占位符 但是为 MVC 5 下拉列表添加一个占位符怎么样 我有以下代码 但不会将占位符放入下拉列表中 Html DropDownListFor model gt model
  • Constexpr 类:继承?

    首先 我正在使用 Clang 3 4 1 我正在编写一个全局变量 它必须充当编译时上下文的占位符 主要作为值模板参数 为此 我编写了一个名为的 constexpr 类chameleon 它模仿任何运行时值的行为 struct chamele
  • c++11 及更高版本中 mutex.lock() 和 .unlock() 的确切线程间重新排序约束是什么?

    根据https en cppreference com w cpp atomic memory order https en cppreference com w cpp atomic memory order mutex lock and
  • 帮助菜单缺失部分 - Eclipse Luna

    我正在 Eclipse Luna 中工作 安装 Oracle Enterprise Pack for Eclipse OEPE 后 帮助菜单显示缺少项目 我附上屏幕截图 丢失物品 另外 我检查了菜单可见性 检查更新 安装新软件 安装细节 等
  • mypy 设置字典键/接口

    假设我有一个以字典作为参数的函数 def f d dict gt None x d x print x 我可以指定这本词典吗must有钥匙 x 到我的 我正在寻找类似的东西打字稿的界面 https www typescriptlang or
  • 如何在 Eclipse CDT 中配置特定的 GCC 交叉工具链?

    我导入了一些源代码C Makefile Project到 Eclipse CDT 工作区 并指定Cross GCC 索引器设置 工具链 项目导入进展顺利 但包含路径设置仅指向我当前的本机主机 GCC 实现 我一直在寻找Toolchain E
  • JavaScript:如何将额外参数传递给回调[重复]

    这个问题在这里已经有答案了 我有一个问题困扰了我一段时间 假设我有以下数组 var array 1 2 3 现在我有一个与此类似的功能 function print num str console log str num 是否可以调用 fo
  • Net Core 2.1 通用主机即服务

    我正在尝试使用最新的 Dotnet Core 2 1 运行时构建 Windows 服务 我不托管任何 aspnet 我不希望或不需要它来响应 http 请求 我遵循了示例中的代码 https github com aspnet Docs t
  • 我可以在 ARView 中使用缩放功能吗?

    我希望我的用户在 AR 应用程序中使用缩放 可以使用 ARView 进行缩放吗 我编写了以下代码并将其添加到点击操作中 let discoverySession AVCaptureDevice DiscoverySession device
  • 如何在 R 中使用 `tryCatch` 正确记录警告和错误?

    我有一个函数fun通常会产生警告 偶尔会引发错误 我正在尝试使用tryCatch记录警告和错误 如建议的那样这个答案 https stackoverflow com a 57658252 5252007 如何同时存储警告和错误 这是一个最小