Hello all,

Recently i've been forced to output results from a Wavelet transform to files because storing of objects in R took too much memory.

The exported objects are lighter than the objects produced by the Wavelet package in R so i can re-import them in R.

Problem is..i have 400 object of 16,5 Mb each. and it take about 6 hours to reimport in R! I use the readr package as this is the fastest base function in R.

I thus explore the benefits of using directly C++ with Rcpp to see if it can lead me to significant gains.

The idea is to read the file and store it into an Rcpp matrix being returned in R.

I adapted a C++ code to use Rcpp, it compiles but when using it it crashes R:

#include <Rcpp.h>
#include <fstream>
#include <sstream>
#include <string>
using namespace Rcpp;



// [[Rcpp::export]]
NumericMatrix readfilecpp()
{

NumericMatrix output;
std::ifstream myfile("/home/ogami/outBvTem_17dwt_1.csv");

for (int row=0; row<15; ++row)
{
    std::string line;
    std::getline(myfile,line);
    //if(!myfile.good())
        //break;

    std::stringstream iss(line);

for (int col=0; col<4600; ++col )
{
    std::string val;
    std::getline(iss,val,',');
    //if (!iss.good())
        //break;

    std::stringstream convertor(val);
    convertor >> output(row,col);
}
}
return(output);
}

any idea?

Thank you!


_______________________________________________
Rcpp-devel mailing list
Rcpp-devel@lists.r-forge.r-project.org
https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel

Reply via email to