【问题标题】:test R extension without R在没有 R 的情况下测试 R 扩展
【发布时间】:2014-05-05 13:12:05
【问题描述】:

我一直致力于对 R 进行扩展,以进行一些聚类。该项目使用 c++ 和 Rcpp(使用 RcppArmadillo 执行计算)。因此,我需要测试一些课程。有人建议我使用 googletest。不幸的是,我没有运行任何测试代码。

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

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

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

问题是没有 R 是否可以使用 Rcpp?

【问题讨论】:

    标签: r googletest rcpp armadillo testthat


    【解决方案1】:

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

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

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

    【讨论】:

    • 不,你没有。默认对流器重用 R 内存。只需阅读文档,或以前的讨论,或者只是对其进行记忆分析。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-03
    • 2017-07-19
    • 1970-01-01
    • 1970-01-01
    • 2021-07-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多