Rcpp:无缝R和C++集成

生成状态 许可证 CRAN(起重机) 依赖关系 覆盖率状态 Debian包 上次提交时间
下载 CRAN使用 CRAN间接 生物导体的使用 堆栈溢出
JSS公司 施普林格用户! 塔斯

简介

这个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