1

我一直在研究 R 的扩展,它将进行一些聚类。该项目使用 c++ 和 Rcpp(使用 RcppArmadillo 执行计算)。因此,我需要测试一些课程。有人建议我使用 googletest。不幸的是,我无法运行任何测试代码。

问题是,为了测试使用 Rcpp 和 googletest 框架的类,我必须在 R 环境之外工作。

我的意思是我不会将数据转换成标准的 C++ 数据结构,比如向量。数据集应该是巨大的。我得到带有数据的 NumericMatrix 并将其传递下去。这会导致所有 c++ 类都使用 Rcpp.h(或犰狳)。我想知道我是否可以在 R 之外使用这些类。

我一直在寻找有关使用 Rcpp 作为库的独立程序的任何信息,但我得到的只是“独立”代码,与通过内联包直接在 R 命令行界面中编译的 c++ 代码相反。我更喜欢使用 googletest,因为我可以直接测试 c++。

问题是是否可以在没有 R 的情况下使用 Rcpp?

4

1 回答 1

1

严格来说,你不能,因为 Rcpp 代码是从 R 调用的。

从更广泛的意义上说,您当然可以正确编写接口。编写依赖于 R 和 Rcpp 标头的 C++ 代码,仅使用 C++ 和 STL 和 Armadillo,也许还有 googletest 成语。即不要使用 Rcpp 类型,例如,Rcpp::NumericMatrix而是使用 Armadillo 类型,例如arma::mat. 测试他们的生活日光。也许把它们包在图书馆里。

然后只需使用 Rcpp 和 RcppArmadillo 编写一个瘦访问层。瞧——你已经测试了代码,在 R 中访问。

于 2014-03-26T20:56:33.847 回答