![]() |
1
17
首先,免责声明:我使用 Rcpp 总是。事实上,当RppTemplate(在RCPP中被重新命名)已经被孤立并且两年没有更新时,我开始用它的初始名称RCPP(在这个名称下它被贡献给 RQuantLib )大约一年前,我做了一些增量更改,您可以在变更日志中找到这些更改。 现在,rcptemplate在整整35个月之后最近又回来了,没有任何更新或修复。它包含有趣的新代码,但它似乎不向后兼容,所以我不会在已经使用RCPP的地方使用它。 Rcppbind 每次我检查的时候都不是很积极。Whit Armstrong还具有一个模板化的接口包,名为 rabstraction . Inline 是完全不同的:它通过“嵌入”一个r字符串来简化编译/链接循环,然后编译、链接和加载程序。我已经和Oleg谈过拥有内联支持RCPP,这会很好。 Swig 也很有趣。JoeWang在那里做的很好,为R打包了所有的Quantlib,但是当我上次尝试它时,由于R内部的一些变化,它不再工作了。据Swig团队的人说,Joe可能还在努力。无论如何,swig的目标是更大的库。这个项目可能需要复兴,但也并非没有技术挑战。 再提一次 RInside 它与Rcpp一起工作,并让你在C++应用程序中嵌入R。 综上所述: RCPP 对我来说效果很好,特别是对于那些只想添加一两个函数的小型探索性项目。它的焦点是易用性,它允许你“隐藏”一些R的内部结构,这些内部结构并不总是有趣的工作。我认识一些其他用户,我通过电子邮件帮助他们上下。所以我会说去做这个。 我的“带R的HPC简介”教程中有一些RCPP、RINSide和内联的例子。 编辑: 因此,让我们来看一个具体的例子(摘自“HPC with R intro”幻灯片,并借用了从Venables和Ripley那里得到的Stephen Milborrow)。任务是枚举2x2矩阵行列式的所有可能组合,每个位置只包含一个数字。这可以通过巧妙的矢量化方式(如我们在教程幻灯片中所讨论的)或如下所示的强力实现:
如果你把这个保存为,比如,
创建共享库。我们使用
以同样的方式,你可以发送向量,矩阵,…各种R和C++数据类型的后端比较容易。希望这能有所帮助。 编辑2(大约5年后): 所以这个答案得到了一个上票,所以在我的队列中冒泡了。一 许多 自从我写了它,时间已经过去了,RCPP已经 很多 功能更丰富。所以我很快就写了这个
文件中的代码可以如下使用
一些关键区别在于:
|
![]() |
AstralHex · 矩阵乘法代码工作不正常 5 月前 |
![]() |
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 5 月前 |
![]() |
Die4Toast · 递归调用成员箭头运算符-> 6 月前 |
![]() |
Anka Hanım · 关于结构和动态数组地址的问题 6 月前 |