未实现的类型'内置'在' coerceToReal' [RCPP]

时间:2017-11-09 12:36:04

标签: c++ r rcpp

我刚刚开始使用Rcpp。我有一个简单的程序,它采用两个数值向量,计算它们的并集并返回一个数字向量。列表粘贴在下面(test.cpp)。

#include <Rcpp.h>
#include <algorithm>
using namespace Rcpp;

// [[Rcpp::export]]
NumericVector test(NumericVector x, NumericVector y) {
  int n = x.size() + y.size();
  std::vector<int> v(n);
  std::vector<int>::iterator it;

  std::sort(x.begin(), x.end());
  std::sort(y.begin(), y.end());

  it=std::set_union(x.begin(), x.end(), y.begin(), y.end(), v.begin());
  v.resize(it-v.begin());

  return wrap(v);
}


/*** R
x <- c(5,10,15,20,25)
y <- c(50,40,30,20,10)
test(x, y)
*/

当我尝试使用值

运行程序时
x <- sample(20000)
y <- sample(20000)
test(x, y)

该功能有效。但是当我增加数值时

x <- sample(1000000)
y <- sample(1000000)
test(x, y)

程序崩溃并输出

Error in .Primitive(".Call")(<pointer: 0x7f1819d8af20>, x, y) : 
  unimplemented type 'builtin' in 'coerceToReal'

任何想法发生了什么?感谢任何指针或参考。

1 个答案:

答案 0 :(得分:2)

NumericVector替换为IntegerVector s。 或者使用std::vector<double>