是否有可能捕获 C 中 Rf_eval R 的错误?

2024-01-25

我需要捕获一个错误Rf_eval in C。这可能吗?

一些示例函数

SEXP foo(SEXP x, SEXP env) {
   SEXP res;
   PROTECT(res = Rf_eval(x, env));
   UNPROTECT(1); 
   return res;
}

我努力了Rcpp_eval from Rcpp and Rcpp11,但这两个都不适合我的情况,我需要打电话Rf_eval直接地。是否可以直接在 C 中捕获错误?如果是这样怎么办?


在 Rinternals.h 中使用 R_tryEval 或 R_tryEvalSilent

#include <Rdefines.h>

SEXP foo(SEXP fun, SEXP env)
{
    int err = 0;
    R_tryEval(fun, env, &err);
    if (err)
        Rprintf("error occurred\n");
    return R_NilValue;
}

with

> .Call("foo", quote(stop("oops")), .GlobalEnv)
Error: oops
error occurred
NULL

这是一个更完整的示例,检索最后一个错误

#include <Rdefines.h>

SEXP silent(SEXP fun, SEXP env, SEXP errmsg)
{
    int err = 0;
    SEXP result = PROTECT(R_tryEvalSilent(fun, env, &err));
    if (err) {
        SEXP msg = PROTECT(R_tryEvalSilent(errmsg, env, &err));
        if (!err)
            Rprintf("error occurred: %s",
                    CHAR(STRING_ELT(msg, 0)));
        else
            Rprintf("(unknown) error occurred");
        UNPROTECT(1);
        result = R_NilValue;
    }

    UNPROTECT(1);
    return result;
}

used as

.Call("silent", quote(stop("oops")), .GlobalEnv, quote(geterrmessage()))

在 R 级别留下尽可能多的代码(例如,条件错误处理)可能很有意义,可以通过包装要评估的函数或提供自定义错误处理函数来代替geterrmessage().

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

是否有可能捕获 C 中 Rf_eval R 的错误? 的相关文章

  • 如何在 Android NDK 中创建新的 NativeWindow 而无需 Android 操作系统源代码?

    我想编译一个 Android OpenGL 控制台应用程序 您可以直接从控制台启动 Android x86 运行 或者从 Android x86 GUI 内的 Android 终端应用程序运行 这个帖子 如何在 Android NDK 中创
  • 使用post方法将多个参数发送到asp.net core 3 mvc操作

    使用 http post 方法向 asp net mvc core 3 操作发送具有多个参数的 ajax 请求时存在问题 参数不绑定 在 dot net 框架 asp net web api 中存在类似的限制 但在 asp net mvc
  • 从多个类访问串行端口

    我正在尝试使用串行端口在 arduino 和 C 程序之间进行通信 我对 C 编程有点陌生 该程序有多种用户控制形式 每一个都需要访问串口来发送数据 我需要做的就是从每个类的主窗体中写入串行端口 我了解如何设置和写入串行端口 这是我的 Fo
  • 检查算术运算中的溢出情况[重复]

    这个问题在这里已经有答案了 可能的重复 检测 C C 中整数溢出的最佳方法 https stackoverflow com questions 199333 best way to detect integer overflow in c
  • ASP MVC:服务应该返回 IQueryable 的吗?

    你怎么认为 你的 DAO 应该返回一个 IQueryable 以便在你的控制器中使用它吗 不 您的控制器根本不应该处理任何复杂的逻辑 保持苗条身材 模型 而不是 DAO 应该将控制器返回给视图所需的所有内容 我认为在控制器类中看到查询 甚至
  • IronPython:没有名为 json 的模块

    我安装了 IronPython 我的 python 文件如下所示 import sys print sys version import json 运行它的代码 var p Python CreateEngine var scope p C
  • 如何识别 WPF 文本框中的 ValidationError 工具提示位置

    我添加了一个箭头来指示工具提示中的文本框 当文本框远离屏幕边缘时 这非常有效 但是当它靠近屏幕边缘时 工具提示位置发生变化 箭头显示在左侧 Here is the Image Correct as expected since TextBo
  • 如何将“外部模板”与由同一类中的模板化成员使用的嵌套类一起使用?

    首先 一些背景信息 我尝试以 Herb Sutter 在他的解决方案中介绍的方式使用 Pimpl 习语 得到了 101 http herbsutter com gotw 101 这在头文件中看起来像这样 include pimpl h h
  • 使用“assign()”为列表项分配值

    首先了解一些背景 我写了一个中缀函数 本质上取代了这个习惯用法 x length x 1 lt y 或者简单地说x lt append x y 对于向量 这里是 lt function x y xcall lt substitute x x
  • 在 2D 中将一个点旋转另一个点

    我想知道当一个点相对于另一个点旋转一定角度时如何计算出新的坐标 我有一个块箭头 想要将其相对于箭头底部中间的点旋转角度 theta 这是允许我在两个屏幕控件之间绘制多边形所必需的 我无法使用和旋转图像 从我到目前为止所考虑的情况来看 使问题
  • 基于xsd模式生成xml(使用.NET)

    我想根据我的 xsd 架构 cap xsd 生成 xml 文件 我找到了这篇文章并按照说明进行操作 使用 XSD 文件生成 XML 文件 https stackoverflow com questions 6530424 generatin
  • 为什么我不应该对不是由 malloc() 分配的变量调用 free() ?

    我在某处读到 使用它是灾难性的free删除不是通过调用创建的对象malloc 这是真的 为什么 这是未定义的行为 永远不要尝试它 让我们看看当您尝试时会发生什么free 自动变量 堆管理器必须推断出如何获取内存块的所有权 为此 它要么必须使
  • 在 C 中使用 GNU automake 中的解析器

    我是 GNU autotools 的新手 在我的项目中使用了 lex 和 yacc 解析器 将它们作为 makefile am 中的源代码会产生以下错误 配置 in AC CHECK PROGS YACC bison yacc none i
  • 将代码拆分为标头/源文件

    我从 Asio 的示例页面中获取了以下代码 class tcp connection public boost enable shared from this
  • 如何使用plotmath更新ggplot图例标签

    我正在尝试更新ggplot要使用的图例标签plotmath但是 当我这样做时 它将之前组合的图例分成两部分 通过一个例子可能更容易理解 test data and the default plot gives the correct col
  • 有没有一种简单的方法可以让 Visual Studio 2015 使用特定的 ToolsVersion?

    使用特定版本构建项目或解决方案时msbuild我可以使用以下命令选择早期的 net 工具链 toolsversion or tv switch C Program Files x86 MSBuild 14 0 bin msbuild tv
  • 斯皮尔曼相关性和联系

    我正在一小组配对排名上计算斯皮尔曼的 rho 斯皮尔曼因处理领带不当而闻名 例如 取2组8个排名 即使两组中有6个是平局 相关性仍然很高 gt cor test c 1 2 3 4 5 6 7 8 c 0 0 0 0 0 0 7 8 met
  • 当前的 x86 架构是否支持非临时加载(来自“正常”内存)?

    我知道有关此主题的多个问题 但是 我没有看到任何明确的答案或任何基准测量 因此 我创建了一个处理两个整数数组的简单程序 第一个数组a非常大 64 MB 第二个数组b很小 无法放入 L1 缓存 程序迭代a并将其元素添加到相应的元素中b在模块化
  • 使用 C# 从 DateTime 获取日期

    愚蠢的问题 给定日期时间中的日期 我知道它是星期二 例如我如何知道它的 tue 2 和 mon 1 等 Thanks 您正在寻找星期几 http msdn microsoft com en us library system datetim
  • 使用 Crypto++ 获取 ECDSA 签名

    我必须使用 Crypto 在变量中获取 ECDSA 签名 我在启动 SignMessage 后尝试获取它 但签名为空 我怎样才能得到它 你看过 Crypto wiki 吗 上面有很多东西椭圆曲线数字签名算法 http www cryptop

随机推荐

  • SSIS 问题无法解密受保护的 XML 节点

    我创建了一个 SSIS 包 它从 ftp 服务器中提取文件并将其保存到我的本地驱动器 但我遇到了这个问题 有了同样的错误消息 我只收到警告 但今天作业失败了 Message 以用户身份执行 cam Package Runner 适用于 64
  • 使用 Google 本机客户端 (NaCl) 的并行端口访问

    我正在尝试写一个Chrome应用程序 https developer chrome com apps about apps这将支持通过连接到计算机的旧打印机进行打印并口 http en wikipedia org wiki Parallel
  • android 进入电影院时如何通知用户?

    在我的 Android 应用程序中 我有地图视图和当前位置 现在显示最近的剧院 我想在用户进入剧院 如地理围栏 时通知用户 我在 NET 上搜索并没有找到任何支持地理围栏的 Android api 请帮助如何做到这一点 注意 我尝试过htt
  • 导入 .svg 并调整 .svg 大小在 next.js 中使用样式组件

    我目前正在尝试将 svg 导入 next js 项目 但失败了 我尝试以与 React 项目相同的方式导入 svg 创建了typing d ts 并导入 svg 之类的组件 但这不起作用 declare module svg import
  • !IsPostBack 上的隐藏字段为 null,IsPostBack 上的隐藏字段不为 null

    首先 我对我的问题标题不明确表示歉意 我不确定如何在标题中简洁地描述我的问题 我的 aspx 中有一个隐藏字段
  • 将数字拆分为四舍五入的数字

    是否有一个库可以将一个数字分成多个部分 但确保所有部分都是四舍五入的数字 例如 将 100 分成 3 将是33 33 但我希望对其进行四舍五入并确保总和也保持为 100 34 33 33 您可以使用内置函数divmod https docs
  • 如何在 WordPress 中集成 Razorpay 支付网关

    我计划将 Razorpay 支付网关集成到我的客户网站中 该网站是用 WordPress 开发的 其中场景如下 用户将根据他的要求填写查询表 然后根据客户的要求 业主将回复费用和一些代码给客户 通过手机 电子邮件通信 客户将进入网站的支付页
  • 如何正确格式化 python 日志格式化程序?

    我尝试按照 Python 日志格式化程序输出字符串的方式进行格式化 我写了一个简单的例子来说明这个问题 import logging from pathlib import Path create auxiliary variables l
  • 如何使 Install-Module 也安装任何所需的模块?

    我正在开发一个 PS 模块 它依赖于 SqlServer 这是模块清单文件 ModuleVersion 1 0 19103 11 GUID 59bc8fa6 b480 4226 9bcc ec243102f3cc Author Compan
  • 使用 purrr 递归处理任意层次结构

    假设我想根据某些特定标准修剪由 R 中的嵌套列表层次结构组成的树 我可以使用 轻松 地做到这一点lapply Based an example from the NetworkD3 documentation https christoph
  • 使用 Requests 库通过 Python 3.7 发出异步请求

    我需要做异步请求 http docs python requests org en v0 10 6 user advanced asynchronous requests使用请求库 在 Python 3 7 中如果我尝试from reque
  • 如何在 Swift 中检查位字段(特别是 SCNetworkReachabilityFlags)中的标志?

    我有一个SCNetworkReachabilityFlags变量并想要检查它的特定值 例如如果网络可通过 WWAN 访问 The SCNetworkReachabilityFlags类型是一个typealias for UInt32各种选项
  • WooCommerce REST API 按 ID 获取多个产品

    我需要按列表中的每个产品显示所有相关产品 例如 在我的应用程序中 我有 3 个产品 id 为 1 2 3 产品 ID 1 具有相关的 5 6 7 产品 ID 2 具有相关的 8 和 9 等 现在我有一个包含所有相关的数组 5 6 7 8 9
  • 可移植类库的实体框架

    当我尝试使用 Nuget EntityFramework 时 我正在尝试为可移植类库创建存储库 实体框架 无法添加对 System ComponentModel DataAnnotations 的引用 请确保它位于全局程序集缓存中 有什么想
  • C++ 中的构造函数和析构函数是如何实现的?

    我有 2 个类 Base 和 Derived 从 Base 公开派生 当我写下 Derived d1 new Derived delete d1 编译器认为 d1 是 Derived 类型对象 因此它调用派生类构造函数 派生类构造函数调用基
  • 分支发散、CUDA 和 Kinetic Monte Carlo

    因此 我有一个在晶格上使用动力学蒙特卡罗的代码来模拟某些东西 我正在使用 CUDA 在我的 GPU 上运行此代码 尽管我相信同样的问题也适用于 OpenCl 这意味着我将格子划分为小的子格子 每个线程都在其中一个子格子上运行 由于我正在进行
  • UnicodeDecodeError:数据意外结束

    我有一个巨大的文本文件我想打开 我正在分块读取文件 避免与一次读取太多文件相关的内存问题 代码片段 def open delimited fileName args with open fileName args encoding UTF1
  • TFS API dll 的 SpecificVersion=False

    我们的 Web 应用程序大量使用 TFS API 我们使用 TFS 2010 API dll 开发并编译它 我们还设置 SpecificVersion False 问题是 当我们部署到具有 TFS 2012 而不是 TFS 2010 的服务
  • Android:子类图库不会通过 onKeyDown 事件滚动

    我有一个子类 Gallery 小部件 我自定义了它的 onFling 方法 否则一切都应该与原始 Gallery 小部件相同 我正在尝试使用以下方法为其向左或向右滚动设置动画 gallery onKeyDown KeyEvent KEYCO
  • 是否有可能捕获 C 中 Rf_eval R 的错误?

    我需要捕获一个错误Rf eval in C 这可能吗 一些示例函数 SEXP foo SEXP x SEXP env SEXP res PROTECT res Rf eval x env UNPROTECT 1 return res 我努力