Rcpp:无缝R和C++集成
简介
这个Rcpp包通过R函数和(仅头)C++库帮助集成R和C++。
所有底层R类型和对象,即,所有内容aSEXP系统
在R中表示内部,与相应的C++对象相匹配。这涵盖了从向量、矩阵或列表到环境、函数等所有内容。每个SEXP系统
变量被自动映射到一个专用的C++类。例如,数字向量表示为Rcpp::数值向量
类,环境表示为Rcpp::环境
,函数表示为Rcpp::函数
等Rcpp简介小插曲(现出版为TAS论文; 一个早期介绍也作为JSS论文)提供了一个很好的Rcpp入口点Rcpp网站,的Rcpp页面和Rcpp库完整的文档由Rcpp手册.
其他亮点:
从C++到R再到R的转换是由模板驱动的Rcpp::包装
和Rcpp::作为
如Rcpp扩展小插曲。
Rcpp还提供了Rcpp模块,这是一个允许将C++函数和类公开到R级别的框架。这个Rcpp-模块vignette详细介绍了Rcpp模块的当前功能集。
Rcpp包含一个名为Rcpp-sugar的概念,它将许多R函数引入C++。Sugar利用惰性求值和表达式模板来获得出色的性能,同时公开了一种比等效的低级循环代码更易于使用的语法。这个Rcpp-糖概述了该功能。
Rcpp属性提供了一种高级语法,用于将C++函数声明为可从R调用,并自动生成调用它们所需的代码。属性旨在促进R会话中C++的交互使用,并支持R包开发。属性构建在Rcpp模块之上,其实现基于内联包中以前的工作。请参阅Rcpp属性想了解更多细节。
文档
该软件包附带九个pdf小插曲,包括一个Rcpp的最新介绍现在发布为TAS中的纸张(并且作为在PeerJ中预打印). 还提供了早期介绍发布为JSS论文)
其他小插曲包括Rcpp常见问题以及介绍Rcpp属性。其他文档可通过Rcpp手册Eddelbuettel(2013年,Springer);有关详细信息,请参阅“引文(“Rcpp”)”。
示例
这个Rcpp库展示了100多个完整的文档和工作示例。这个程序包RcppExamples包含一些涵盖核心数据类型的基本示例。
其中包括了许多示例,还有1000多个单元测试,它们提供了额外的使用示例。
2005年和2006年,Dominick Samperi编写了早期版本的Rcpp,其中包含我们现在所称的“经典Rcpp API”。此代码已从Rcpp分解到包RcppClassic中,并且仍然适用于依赖旧接口的代码。新开发应该始终使用此Rcpp包。
其他使用示例由使用Rcpp的包提供。截至2020年6月CRAN(起重机)使用Rcpp的包,还有203个生物导体包,以及使用Rcpp的未知数量的GitHub、Bitbucket、R-Forge…存储库。所有这些包都提供了Rcpp的使用示例。
安装
Rcpp的发布和测试版本可通过CRAN(起重机)网络,可以从R内通过
要从源代码安装,请确保您有一个完整的R包开发环境,如相关文档中所述;另请参阅中的问题1.2和1.3Rcpp-常见问题解答.
支持
提问的最佳地点是Rcpp-devel公司R-forge托管的邮件列表。请注意,为了抑制垃圾邮件,您必须是订阅方才能发布邮件。你也可以查阅列表档案,看看你的问题以前是否被问过。
另一种选择是使用StackOverflow及其“rcpp”标记.搜索功能(使用碾压混凝土路面
在方括号中,如[rcpp]我的问题术语标记查询)是非常有价值的,因为以前确实有很多问题被问及和回答过。
这个在GitHub回购处发行票据是主要的错误报告界面。和其他网络资源一样,也可以搜索以前的问题。
作者
德克·埃德布特尔、罗曼·弗朗索瓦、JJ·阿莱尔、凯文·乌西、羌寇、内森·罗素、道格·贝茨和约翰·钱伯斯
许可证
GPL(>=2)
最初创建时间:2008年12月5日星期五19:58:31 CST
上次修改时间:6月30日星期二11:34:46 CDT 2020