[Rcpp-devel] A tough RcppArmadillo Error; address(nil) cause 'unknown' in R
Qiang Kou
qkou at umail.iu.edu
Mon Jul 3 22:40:13 CEST 2017
Hi, I am afraid the example you provided is not a reproducible example.
First, we don't know the content of ge-model.h. Second, we don't know which
input will trigger the fault.
Please provide a reproducible example if you really want to get help.
Best,
KK
On Sat, Jul 1, 2017 at 11:06 AM, 井澤 毅 <a-izawa at mail.ecc.u-tokyo.ac.jp>
wrote:
> Dear rcpp-devel at lists.r-forge.r-project.org,
>
> Sorry for bothering you much, but do me a favor please. Please help me
> some.
>
> I am just a molecular biologist working on plants. Thus, I am still a
> newcomer in this field.
>
> Recently, I have been working with a script using RcppArmadillo, This has
> helped me a lot. However, after updating the system in our institute, the
> script gives me an error repeatedly. My former Postdoc wrote this script.
> Thus, I did not know this inside much.
>
> I have tried to fix it for more than a month, but now I have no idea how
> to fix it. I would appreciate it very much if you could help and give me
> your advice.
>
> Please see an attached cpp file, termed ge-r.cpp. With this cpp file and
> other ones, I have succeeded to install a skeleton R package into R using
> your function Rcpp.package.skeleton.
>
> In this ge-r.cpp, there is one R function called simulate_R() written. In
> this R fucntion, there are two C++ functions, load() and simulate(), both
> are described in other cpp files, called from C++ into R. With cout
> function described in simulate_R(), I confirmed these two function work in
> R thanks to RcppArmadillo, however, it suddenly stops with an error,
> address(nil) cause 'unknown' in R. It has seemed to stop when it return
> (out) at the last in ge-r.cpp. I do not know why it happens. Note that the
> C++ script works normally after the update of the system. Only this
> RcppArmadillo conversion from C++ function into a R function is deformed.
>
> Please give me an advice, please. Of course, I can give you more
> information on the C++ script in details if you need.
>
> Best regards,
>
> Takeshi
>
>
>
> ge-r.cpp
>
> #ifndef __R__
>
> #define __R__
> #endif
>
> #ifndef USE_OMP
> #define USE_OMP
> #endif
>
>
> #include <RcppArmadillo.h>
>
>
> #include "ge-model.h"
>
> using namespace arma;
>
>
>
> // input:
> // parameter matrix: row for particle, col for parameter
> // filename of observation
> // output:
> // simulation for regular time points: row for particle, col for time, slice for term
> // existing observation to corresponding regular time points
>
> // [[Rcpp::depends(RcppArmadillo)]]
> // [[Rcpp::export]]
> Rcpp::List simulate_R(const arma::mat& param_r, const char* fobs, const int interval) {
>
> try {
> geModel Model;
> Model.n_thread=omp_get_num_procs();
> Model._param=param_r;
> cout << "params set.\n";
>
> cout << "filename of obs: "<< fobs << ".\n";
>
> Model._obs.load(fobs);
>
> cout << "obs loaded.\n";
>
> Model.n_acc=Model._param.n_rows;
> cout << "n_acc set to be " << Model.n_acc << ".\n";
>
> Model._obs._out_interval = interval;
> Model._obs._n_out_date = (Model._obs._n_date / Model._obs._out_interval) + 1;
>
> Model.out_y=cube(Model.n_acc, Model._obs._n_group, Model._obs._n_out_date);
> Model.out_res_1=cube(Model.n_acc,Model._obs._n_group, Model._obs._n_out_date);
> Model.out_res_2=cube(Model.n_acc,Model._obs._n_group, Model._obs._n_out_date);
> Model.out_res_clock=cube(Model.n_acc,Model._obs._n_group, Model._obs._n_out_date);
> Model.out_res_dev=cube(Model.n_acc,Model._obs._n_group, Model._obs._n_out_date);
>
> cout << "output matrix initialized.\n";
>
> //necessary for simulate_obs
> Model._distance=vec(Model.n_acc);
>
> Model.simulate(0,Model.n_acc-1,true);
> cout << "simulation complete.\n";
>
> fflush(stdout);
>
> cout << size(Model.out_y)<<".\n"<< Model.out_y[0]<<".\n"<<Model.out_y[1]<<".\n"<<Model.out_y[2]<<".\n";
>
> Rcpp::List out = Rcpp::List::create(
> Rcpp::Named("out_y")=Model.out_y,
> Rcpp::Named("out_res_1")=Model.out_res_1,
> Rcpp::Named("out_res_2")=Model.out_res_2,
> Rcpp::Named("out_res_clock")=Model.out_res_clock,
> Rcpp::Named("out_res_dev")=Model.out_res_dev
> );
>
> cout << "List constructed.\n";
>
> fflush(stdout);
>
> return (out);
> }
>
> catch(char* e) {
> cout << e << "\n";
> exit(EXIT_FAILURE);
> }
> catch(...) {
> cout << "Error\n";
> exit(EXIT_FAILURE);
> }
> }
>
>
> _______________________________________________
> Rcpp-devel mailing list
> Rcpp-devel at lists.r-forge.r-project.org
> https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel
>
--
Qiang Kou
qkou at umail.iu.edu
School of Informatics and Computing, Indiana University
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.r-forge.r-project.org/pipermail/rcpp-devel/attachments/20170703/ed398872/attachment.html>
More information about the Rcpp-devel
mailing list