Right 2 lines were missing: C++:
#include <Rcpp.h> using namespace Rcpp; //[[Rcpp::export]] void bug(DataFrame df){ DatetimeVector dt = df["dt"]; } R: library("Rcpp") sourceCpp("rcpp2.cpp") df <- data.frame(x=c(1L,NA,2L), dt=as.POSIXct(c(1L,NA,2L),origin='1970-01-01')) print(df) bug(df) ##here R crashes## 2013/7/19 Dirk Eddelbuettel <e...@debian.org> > > On 19 July 2013 at 14:05, stat quant wrote: > | Hello list, I might have found a bug, would you mind checking it too? > > No, you didn't. See below. > > | In R: > | > | library("Rcpp") > | sourceCpp("rcpp.cpp") > | df = data.frame(x=c(1L,NA,2L), > dt=as.POSIXct(c(1L,NA,2L),origin='1970-01-01')) > | > | df > | x dt > | 1 1 1970-01-01 00:00:01 > | 2 NA <NA> > | 3 2 1970-01-01 00:00:02 > | > | In C++ > | > | //[[Rcpp::export]] > | void bug(DataFrame df){ > | DatetimeVector dt = df["dt"]; > | } > > That __obviously__ does not compile (no header, no namespace, ...) so I > think > you are being sloppy. > > Execution of a __repaired and reproducible__ example, first via littler > then > via R: > > > edd@don:~$ r -lRcpp -e'sourceCpp("/tmp/statquant.cpp")' > > > df <- data.frame(x=c(1L,NA,2L), > + dt=as.POSIXct(c(1L,NA,2L),origin='1970-01-01')) > > > print(df) > x dt > 1 1 1969-12-31 18:00:01 > 2 NA <NA> > 3 2 1969-12-31 18:00:02 > > > bug(df) > > > cat("Hello world\n") > Hello world > edd@don:~$ R -q -e 'Rcpp::sourceCpp("/tmp/statquant.cpp")' > R> Rcpp::sourceCpp("/tmp/statquant.cpp") > > R> df <- data.frame(x = c(1, NA, 2), dt = as.POSIXct(c(1, > + NA, 2), origin = "1970-01-01")) > > R> print(df) > x dt > 1 1 1969-12-31 18:00:01 > 2 NA <NA> > 3 2 1969-12-31 18:00:02 > > R> bug(df) > > R> cat("Hello world\n") > Hello world > R> > R> > edd@don:~$ > > A complete cpp snippet follows below. Please construct better examples > that > actually __work__ next time, test them on __fresh sessions__ and consider > including the R test code in the C++ snippet as I do here. Oh, and stop > using the hidous '=' for assignment in R ;-) > > Dirk > > > ----------------------------------------------------------------------------- > > #include <Rcpp.h> > > using namespace Rcpp; > > //[[Rcpp::export]] > void bug(DataFrame df){ > DatetimeVector dt = df["dt"]; > } > > /*** R > df <- data.frame(x=c(1L,NA,2L), > dt=as.POSIXct(c(1L,NA,2L),origin='1970-01-01')) > print(df) > bug(df) > cat("Hello world\n") > */ > > ----------------------------------------------------------------------------- > > > > | > | Executing bug(df) in R crashes the R session on my box > | > | sessionInfo() > | R version 3.0.0 (2013-04-03) > | Platform: x86_64-w64-mingw32/x64 (64-bit) > | locale: > | [1] LC_COLLATE=French_France.1252 LC_CTYPE=French_France.1252 > | LC_MONETARY=French_France.1252 LC_NUMERIC=C > | LC_TIME=C > | attached base packages: > | [1] stats graphics grDevices datasets utils methods base > | > | other attached packages: > | [1] Rcpp_0.10.4 vimcom_0.9-8 > | loaded via a namespace (and not attached): > | [1] tools_3.0.0 > | > | Regards > | > | ---------------------------------------------------------------------- > | _______________________________________________ > | 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 > -- > Dirk Eddelbuettel | e...@debian.org | http://dirk.eddelbuettel.com >
_______________________________________________ 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