R码与Rcpp码的等价性测试 我有一些C++代码通过RCPP。

R码与Rcpp码的等价性测试 我有一些C++代码通过RCPP。,r,rcpp,R,Rcpp,我的问题是: Rcpp中是否有一个函数给出了一个C++代码块是否与R代码块相同的逻辑输出,也许是等同于相同或相等的东西,它们都是在R?< /P >中实现的。 在R中,相同和全部相等都需要两个R对象进行比较。在我的例子中,一个对象是R代码,另一个是C++代码。 我在Rcpp文档中找不到任何东西 我想你们这里可能有森林和树木问题 最后,这只是一个简单的模拟示例: #include <Rcpp.h> // [[Rcpp::export]] double csCpp(Rcpp::Nume

我的问题是:

Rcpp中是否有一个函数给出了一个C++代码块是否与R代码块相同的逻辑输出,也许是等同于相同或相等的东西,它们都是在R?< /P >中实现的。 在R中,相同和全部相等都需要两个R对象进行比较。在我的例子中,一个对象是R代码,另一个是C++代码。


我在Rcpp文档中找不到任何东西

我想你们这里可能有森林和树木问题

最后,这只是一个简单的模拟示例:

#include <Rcpp.h>

// [[Rcpp::export]]
double csCpp(Rcpp::NumericVector x) {
  return Rcpp::sum(x);
}

/*** R
csR <- function(x) sum(x)
set.seed(42)
x <- rnorm(100)
all.equal(csR(x), csCpp(x))
*/
不出所料,结果是:

R> Rcpp::sourceCpp("/tmp/soQ.cpp")

R> csR <- function(x) sum(x)

R> set.seed(42)

R> x <- rnorm(100)

R> all.equal(csR(x), csCpp(x))
[1] TRUE
R> 

但是,由于您无法用一个输入来证明所有输入的正确性,您又回到了为不同的代表性输入设计合适的单元测试的阶段。

您要求的太多了。为什么不同时运行这两个函数并在各种情况下比较结果呢?如果它们都匹配,则很有可能您的两个候选函数在函数上非常相似。谢谢!我已经在您的Rcpp演示幻灯片中找到了一些示例,这些示例也很有用。