如何在Rcpp中合并数据框

时间:2017-08-21 13:41:21

标签: rcpp

我要求合并两个数据帧内容,数据帧A和B需要C = A + B,尝试使用push_back(),但它非常慢。

// [[Rcpp::export]]

DataFrame mergeEx(DataFrame &dfSrcA , DataFrame &dfSrcB)

{

    Rcpp::IntegerVector   col = dfSrcA["A1"];

    Rcpp::IntegerVector   col1   = dfSrcA["A2"];

    Rcpp::IntegerVector   Bcol  = dfSrcB["A1"];
    Rcpp::IntegerVector   Bcol1 = dfSrcB["A2"];


//  col.push_back(7);

  //col.push_back(8);
  //col1.push_back(9);
  //col1.push_back(10);

  //return DataFrame::create(l,l1);
    return DataFrame::create(Named("A1") = col, Named("A2") = col1);

}

尝试使用std :: copy(),如下面的函数,但得到错误

// [[Rcpp::export]]

DataFrame mergeEx(DataFrame &dfSrcA , DataFrame &dfSrcB)

{

    Rcpp::IntegerVector   col = dfSrcA["A1"];

    Rcpp::IntegerVector   col1   = dfSrcA["A2"];

    Rcpp::IntegerVector   Bcol  = dfSrcB["A1"];
    Rcpp::IntegerVector   Bcol1 = dfSrcB["A2"];

    long lsize = col.size();

    std::copy(Bcol.begin(),Bcol.end(),col.begin()+lsize);

    lsize=col1.size();

    std::copy(Bcol1.begin(),Bcol1.end(),col1.begin()+lsize);

    return DataFrame::create(Named("A1") = col, Named("A2") = col1); 

}

C = mergeEx(A,B)

低于错误 mergeEx(A,B,C)出错:   无法使用R函数转换:as.data.frame

请求你的帮助建议尽快使用Rcpp合并两个数据帧的最快方法,我正在寻找速度,因为延迟是在R中合并这两个数据帧。

还建议我在数据框架上提供良好的文档链接,我发现这些文档提供了非常基本的信息。

0 个答案:

没有答案