integer64和Rcpp兼容性

时间:2018-02-27 18:25:04

标签: r data.table rcpp bit64

在不久的将来,我的包中将需要64位整数。我正在研究基于bit64包的可行性。基本上我打算在data.table中使用interger64 S3类创建一个或多个列,并且我打算使用Rcpp将此表传递给C ++函数。

来自Rcpp图库的以下nanotime example清楚地解释了如何在double的向量上构建64位int的向量,并解释如何从C ++到R创建integer64对象。

我现在想知道如何处理从R到C ++的interger64。我想我可以颠倒这个原则。

void useInt64(NumericVector v) 
{
    double len = v.size();
    std::vector<int64_t> n(len);

    // transfers values 'keeping bits' but changing type
    // using reinterpret_cast would get us a warning
    std::memcpy(&(n[0]), &(v[0]), len * sizeof(double));

    // use n in further computations
}

这是对的吗?还有另一种方法吗?我们可以使用包装器as<std::vector<int64_t>>(v)吗?对于最后一个问题,我想转换不是基于点对点复制。

0 个答案:

没有答案