从 C 包装器调用 R 函数

2023-12-22

我有一个像这样的函数:

callFunc <- function (f) {
    f(1)
}

f可以是(例如)f <- function (x) x。为了简化事情,假设我知道 f 应该返回一个数字并接受一个数字。

我想搬家callFunc到C,但仍然有功能f在 R 中定义,即

.Call('callFunc', function (x) x)

我正在努力思考如何评估 C 端的回调。 我现在是这样的:

#include <R.h>
#include <Rdefines.h>

SEXP callFunc (SEXP i_func) {
    return i_func(1);
}

(然后测试一下:

R CMD SHLIB test.c
# then in R
dyn.load('test.so'); .Call('callFunc', function (x) x)

)

当然,上面的方法是行不通的,因为

  • 我没有强迫i_func进入适当的封闭形式;我不知道该怎么做(有AS_foo宏在Rdefines.h, 但不是AS_CLOSURE).
  • 我什至没有告诉 C 代码i_func应该接受一个数字并返回一个数字,那么它如何计算呢?

有人可以指导我如何去做这件事吗? 我正在努力克服编写 R 扩展 http://cran.r-project.org/doc/manuals/R-exts.html但这相当长,我还没有找到我想要的东西。还有R-help 上的这个问题 https://stat.ethz.ch/pipermail/r-devel/2011-September/062052.html但答案看起来他们实现了回调f在 C 中也是如此,而不是将其保留为 R 对象。


使用 Rcpp 这很容易:

Rcpp::cppFunction("SEXP callFun(Function f) {
  return f(1);
}")

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

从 C 包装器调用 R 函数 的相关文章

  • 在 R 中创建缓冲区和计数点

    I asked 这个问题 https stackoverflow com questions 42498344 create buffer around spatial point data in r and count how many
  • 如何将闪亮 UI 输入框中的值传递回 R 脚本中的变量并运行它?

    我有以下代码source R我正打算逃离闪亮的 目前脚本中有硬编码值 例如 10000 55 15 200 等 以及这些值下面的一些矩阵相关元素 rnorm2 lt function n mean sd mean sd scale rnor
  • 逐对计算行相似度百分比并将其添加为新列

    我有一个像这个示例一样的日期框架 我想找到相似的行 不重复 并逐个计算相似度 我发现这个解决方案 https stackoverflow com questions 52650932 how to calculate the similar
  • 通过 knit 和 igraph 在乳胶中绘制 tkplot

    这可能是一个疯狂的奇怪的梦 我梦想着我可以放一个tkplot from igraph在乳胶文档中通过knitr 我知道一辉对动画很了解 所以我想也许这是可能的 谷歌搜索没有显示我想要什么 所以这是一个无效的尝试 documentclass
  • 自动使用 LRT 评估整个因子变量的显着性

    包含一个或多个因子变量的多变量回归模型的 R 输出不会自动包含模型中整个因子变量的显着性的似然比检验 LRT 例如 fake data frame x1 rnorm 100 x2 sample LETTERS 1 4 size 100 re
  • 如何限制 viridis 色标的范围?

    我有两组数据 我想使用带有 viridis 色标的热图来呈现它们 对于第一个数据集 我的值范围从 0 到 1 2 我可以轻松看到我想要看到的差异 然而 我的第二个数据集有一些异常值 导致范围从 0 到 2 现在很难看出 0 和 1 之间有趣
  • 使用填充美学两次,具有两种不同的比例[重复]

    这个问题在这里已经有答案了 我正在尝试在一组多边形的顶部使用分组箱线图来绘制一个图 并且希望使用填充美学来基于连续变量为多边形着色 并且箱线图基于单独的分组变量 我发现了几篇文章可以帮助我获得多边形上的箱线图 并且找到了其他有相关问题的人
  • 如何绘制沿染色体图形的位置

    我想生成一个图 描绘我所研究的生物体的 14 条线性染色体 按比例绘制 并在每条染色体的指定位置上用彩色条表示 理想情况下 我想使用 R 因为这是我有经验的唯一编程语言 我探索了多种方法来做到这一点 例如使用 GenomeGraphs 但我
  • 我们可以使用什么方法来重塑非常大的数据集?

    当由于非常大的数据计算将花费很长时间并且因此我们不希望它们崩溃时 事先知道要使用哪种重塑方法是很有价值的 Lately methods for reshaping data have been further developed regar
  • Rsolnp:在 cbind(temp, funv) 中:结果的行数不是向量长度的倍数(arg 1)

    我是 stackoverflow 的新手 搜索了很多 但找不到我的问题的答案 我正在尝试使用优化包 Rsolnp 来最小化以下问题 尽管求解器为我提供了解决方案 但每次运行代码时我都会收到以下警告消息 警告消息 1 在 cbind temp
  • 计算一列中正数和负数的数量

    我想计算数据帧的一列中正值和负值的数量 我在 R 中该怎么做 例如 这里是数据框 logFC logCPM LR PValue FDR Bra15066 5 630822 5 184586 73 79927 8 647868e 18 4 0
  • R中添加水印

    我在用magickR中的库 我想在一些图片上添加水印 I used image annotate功能如下 img lt image read C Users Maydin Desktop manzara png image annotate
  • 如何提取与 R 中主题 ID 列表匹配的行?

    我有一个包含许多主题 ID 的数据框 每个主题都有重复观察 我还有一个单独的数据框 其中只有一个主题 ID 列表 我想从更大的数据框中匹配和提取 如何以允许我引用不同数据帧中的SubjectID列表的方式编写代码 不确定我是否完全理解这个问
  • 基于服务器中的条件逻辑呈现闪亮的用户输入

    我正在尝试设置一个闪亮的导航栏面板页面 其中用户控制我根据一组单选按钮中所做的初始选择来显示更改 我直接在 ui 中渲染单选按钮 然后在 Server r 中的 观察到的 逻辑控制结构内构建条件控件 弹出错误是因为我的初始 if 语句计算结
  • 将 Instagram/youtube 嵌入 Shiny R 应用程序

    我想通过点击图表来播放 Instagram 或 Youtube 视频 例如显示异常值等 到目前为止 明确告诉 Shiny 视频内容是有效的 require shiny require ggplot2 data df lt data fram
  • R 中具有稳健回归的异常值

    我正在使用lmrobR 中的函数使用robustbase用于稳健回归的库 我会把它用作 rob reg lt lmrob y 0 dat method MM control a1 当我想返回我使用的摘要时summary rob reg 稳健
  • LDA with topicmodels,如何查看不同文档属于哪些主题?

    我正在使用 topicmodels 包中的 LDA 我已经在大约 30 000 个文档上运行它 获取了 30 个主题 并获得了主题的前 10 个单词 它们看起来非常好 但我想看看哪些文档属于哪个主题的概率最高 我该怎么做 myCorpus
  • 使用 broom 和 tidyverse 总结 r 平方游戏

    我发布了一个问题here https stackoverflow com questions 48627287 getting adjusted r squared value for each line in a geom smooth
  • 如何使用 R 计算成为列表中中位数的概率?

    假设我有以下数据集 其中显示了假设实验的每个状态的三个观察结果的列表 state lt c Iowa Minnesota Illinois outcome lt list c 5 11 11 c 3 12 8 c 9 14 2 dat lt
  • 选择 R 中的数据表中隐藏时(在绿色加号下方)列的显示顺序

    Context 使用 DataTables 库制作交互式表格时 当屏幕宽度对于列的数量和宽度来说太窄时 列将隐藏在绿色 号下 我有一个非常宽的表格 有 20 多列 其中一些内容非常冗长 因此某些列在所有屏幕宽度下总是隐藏的 每次隐藏新列时

随机推荐

  • C# Eval() 支持 [重复]

    这个问题在这里已经有答案了 我们需要在运行时评估对象中的值 同时我们有确切成员路径的文本语句 例如 myobject firstMember secondMember 3 text我们考虑使用正则表达式解析这个文本语句 然后使用反射评估文本
  • Scikit-Learn:所有训练示例中都存在标签而不是 x

    我正在尝试使用 SVM 进行多标签分类 我有近 8k 个特征 并且还有长度接近 400 的 y 向量 我已经有二值化的 Y 向量 所以我没有使用MultiLabelBinarizer 但是当我将它与 Y 数据的原始形式一起使用时 它仍然给出
  • R 中的关联度量——Kendall 的 tau-b 和 tau-c

    是否有用于计算 Kendall tau b 和 tau c 及其相关标准误差的 R 软件包 我在 Google 和 Rseek 上的搜索一无所获 但肯定有人已经在 R 中实现了这些 有three 肯德尔 tau 统计数据 tau a tau
  • 将 null 传递给“XslCompiledTransform.Transform”方法

    我正在尝试使用 XSL 转换 XML 文档 我不太熟悉如何在 NET 中转换 XML 所以我使用一些示例代码 XslCompiledTransform xslTransformer new XslCompiledTransform xslT
  • FlatMapMerge、FlatMapConcat 和 FlatMapLatest 之间有什么区别?

    我无法区分这三个运算符之间的确切区别 文档用于 平面地图合并 https kotlin github io kotlinx coroutines kotlinx coroutines core kotlinx coroutines flow
  • 使用OpenCascade,如何快速进行2个形状的碰撞检测?

    使用OpenCascade 如何进行2个形状的碰撞检测 可能有几种方法 一是计算它们的交集 并检查交集结果 另一种方法是计算它们的最小距离 哪种方式更快 或者还有什么更快的方法 多谢 在 brep 数据结构上计算最小距离是一项相当昂贵的操作
  • jQuery Mobile 从弹出窗口中打开弹出窗口

    我正在使用 jQuery 移动1 9 1 min在 PhoneGap 上 我有一个列表 其中单击的每个项目都会打开一个操作弹出窗口 function showActions index selectedIndex index actionP
  • 获取 Foxpro 中目录中的文件列表

    如何在 FoxPro 中以编程方式获取目录中的文件列表 ADIR 使用任何通配符基于目录创建一个数组 local array MyFiles 1 5 nFilesFound ADIR MyFiles C Somepath dbf for i
  • Rails 2.3 的 EOL(生命周期终止)是什么?

    Rails 2 3 的 EOL 日期是哪一天 2 3 于 2013 年 6 月 25 日终止 同年 Rails 4 0 0 发布 据报道 只有 最后一个主要版本系列 才会收到补丁迈克尔 科齐亚斯基 https groups google c
  • Python在循环外获取变量

    我有一个 python 代码 我需要在 for 循环和 if 语句之外获取它的值并进一步使用该变量 My code with open text r as f for line in f readlines if hi in line a
  • 将 SQLAlchemy ORM 与 sql core 表达式中的对象连接起来?

    我必须使用 SQLalchemy Core 表达式来获取对象 因为 ORM 无法执行 更新和返回 ORM中的更新没有returning from sqlalchemy import update class User ORMBase pur
  • 在 OpenGL 引擎中组织 GLSL 着色器

    哪个更好 To 拥有一个包含大量制服的着色器程序指定 要使用的灯光或要执行的映射 例如 我需要一个网格进行视差映射 另一个网格进行视差 镜面映射 我会为延迟传输创建一个制服的缓存列表 并且如果需要的话 只需为每个下一个网格更改几个制服 To
  • java中的matchTemplate与openCV

    我有这样的代码 Mat img Highgui imread inFile Mat templ Highgui imread templateFile int result cols img cols templ cols 1 int re
  • 如果表中的值满足条件,Vba 宏将从表中复制行

    我正在尝试制作一个宏 遍历一张桌子 查看该表的 B 列中的值是否具有特定值 如果有 则将该行复制到另一个工作表中的范围 结果类似于过滤表 但我想避免隐藏任何行 我对 vba 有点陌生 真的不知道从哪里开始 非常感谢任何帮助 这正是您使用高级
  • 从 genymotion 访问 homestead 主机

    我如何从genymotion模拟器访问homestead 我将这一行添加到模拟器中hosts文件 但不起作用 192 168 10 10 myapp app 以下是我在 Windows 10 上的操作方法 检查宅基地是否有效 我的宅基地在该
  • [NSMutableDictionary setValue: value forKey: key] 是否保留 NSString key?

    添加项目时NSMutableDictionary使用setValue forKey 方法 我想这可以推广到任何NSObject 字典是否保留第二个参数 即NSString 例如 NSAutoreleasePool pool NSAutore
  • Gradle:将 jar 依赖项包含到 Ear/libs 中

    我正在使用 Gradle 创建耳朵 但我很难弄清楚如何正确地将依赖项包含在 lib 文件夹中 我知道我可以使用 earlib project group name version 在那里包含罐子 这些 jar 的编译依赖项也将添加到 Ear
  • 将 JSON 单个字符串反序列化为数组

    我正在尝试反序列化我的 json 数据 但是我的类未正确设置 我无权更改 json 响应 因此我需要编写一个函数来正确处理 json 这是数据 blabla Score 1 Ref 50 foo colour Yellow ref y50
  • 字符串超过 maxJsonLength 且小于 250kb

    我将实体与ajax 一起使用 我想要在使用 JavaScript 创建的网格中使用实体框架提供的完整表格 我当前发送的表格少于 140 行 如果表中只有 50 行 那么我的代码就可以工作 并且出现以下错误 Message Error dur
  • 从 C 包装器调用 R 函数

    我有一个像这样的函数 callFunc lt function f f 1 f可以是 例如 f lt function x x 为了简化事情 假设我知道 f 应该返回一个数字并接受一个数字 我想搬家callFunc到C 但仍然有功能f在 R