Hmm. This does fix the problem:

  DataFrame PLrecord = DataFrame::create(
        Named("txn.qty"  , wrap( txn_qty  ) ),
        Named("txn.prc"  , wrap( txn_prc  ) ),
        Named("txn.fee"  , wrap( txn_fee  ) ),
        Named("pos.qty"  , wrap( pos_qty  ) ),
        Named("close.prc", wrap( close_prc) ),
        Named("PL"       , wrap( PL       ) )
  );

So we might do something wrong with copying objects.

Le 27/03/13 14:19, 该走了 a écrit :
Dear Rcpp developer,
   I am tried return a big DataFrame from Rcpp to R, but met some problem!

### begin dataframetest.cpp

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

// [[Rcpp::export]]
DataFrame dataframetest(NumericVector close){
   int nrow = close.size();
   vector<double>  txn_qty = vector<double>(nrow);
   vector<double> txn_prc = vector<double>(nrow);
   vector<double>  txn_fee = vector<double>(nrow);
   vector<double>  pos_qty = vector<double>(nrow);
   vector<double>  close_prc = as<vector<double> >(close);
   vector<double>  PL = vector<double>(nrow);
   DataFrame PLrecord = DataFrame::create(Named("txn.qty", txn_qty),
Named("txn.prc", txn_prc),
Named("txn.fee", txn_fee),
Named("pos.qty", pos_qty),
Named("close.prc", close_prc),
Named("PL", PL));
   return PLrecord;
}
#### end  dataframetest.cpp

### R code
n <- 4e5
x.prc <- 1:n
library(Rcpp)
sourceCpp("./dataframetest.cpp")
aa <- dataframetest(x.prc)

##### end R code

  When n is big, like 4e5, then it will exhaust the memory or crash;
when n is small, like  4e3, it can return the correct DataFrame. I was
wondering if Rcpp::DataFrame can handle so big DataFrame. In my opinion,
n = 4e5 is not big, I can create such a long data.frame from R code
easily, without any problem. Why Rcpp can not? Or I miss something?

### R code
n <- 4e5
x.prc <- rnorm(n)
a <- data.frame(x = x.prc,
        y = x.prc,
                 d = x.prc,
                 e = x.prc,
                 f = x.prc,
                 k = x.prc)
head(a)
             x           y           d           e           f           k
1 -0.45145433 -0.45145433 -0.45145433 -0.45145433 -0.45145433 -0.45145433
2 -0.55851370 -0.55851370 -0.55851370 -0.55851370 -0.55851370 -0.55851370
3  0.18209145  0.18209145  0.18209145  0.18209145  0.18209145  0.18209145
4 -0.56092768 -0.56092768 -0.56092768 -0.56092768 -0.56092768 -0.56092768
5  0.25689622  0.25689622  0.25689622  0.25689622  0.25689622  0.25689622
6 -0.04558792 -0.04558792 -0.04558792 -0.04558792 -0.04558792 -0.04558792

#### sessionInfo
sessionInfo()
R version 2.15.3 (2013-03-01)
Platform: x86_64-suse-linux-gnu (64-bit)

locale:
  [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C
  [3] LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8
  [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8
  [7] LC_PAPER=C                 LC_NAME=C
  [9] LC_ADDRESS=C               LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base

other attached packages:
[1] Rcpp_0.10.3      data.table_1.8.8

loaded via a namespace (and not attached):
[1] compiler_2.15.3 tools_2.15.3



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



--
Romain Francois
Professional R Enthusiast
+33(0) 6 28 91 30 30

R Graph Gallery: http://gallery.r-enthusiasts.com

blog:            http://blog.r-enthusiasts.com
|- http://bit.ly/ZTFLDo : Simpler R help tooltips
`- http://bit.ly/YFsziW : R Help tooltips

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

Reply via email to