I mean line 49 in ge-model.cpp. You have a function called "initialize" there.
The "initialize" function will initialize the _rand array. Best, KK On Sun, Jul 9, 2017 at 9:55 PM, 井澤 毅 <a-iz...@mail.ecc.u-tokyo.ac.jp> wrote: > Dear KK, > > Sorry for bothering you again, I still have some problems. > > According to your advice, in order to initialize the array in ge-r.cpp, > > I put > > > Model.out_y=cube(Model.n_acc, Model._obs._n_group, > Model._obs._n_out_date,fill::zeros); > Model.out_res_1=cube(Model.n_acc,Model._obs._n_group, > Model._obs._n_out_date,fill::zeros); > Model.out_res_2=cube(Model.n_acc,Model._obs._n_group, > Model._obs._n_out_date,fill::zeros); > Model.out_res_clock=cube(Model.n_acc,Model._obs._n_group, > Model._obs._n_out_date,fill::zeros); > Model.out_res_dev=cube(Model.n_acc,Model._obs._n_group, > Model._obs._n_out_date,fill::zeros); > instead of the old ones, > > 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); > > However, I got the same error in R. > > What should I do next ? > > I am afraid that I do not know how rand generated in ge-model.cpp (line > 37) is linked to the array in ge-r.cpp (line 49) yet. Should I use fill:: > randu instead of fill:: zeros? > > Best, > > Takeshi > > > > > On 2017/07/10 13:03, 井澤 毅 wrote: > > Dear KK, > > Thanks for this explanation. Now I got it. > > I did not think that ge-model.cpp is involved in this problem since it > works well as a C++ script even in our current system. > > I still wonder why this ge-r.cpp works in the old system, but I will ask > this to the maintainer of our system. > I have learned a lot from your suggestion. > > Thanks again! > > Best, > > Takeshi > > > On 2017/07/10 10:34, Qiang Kou wrote: > > In line 37 of ge-model.cpp, you try to free _rand. However, if you don't > call initialize in line 49 first, the array won't be initialized. > > Best, > > KK > > On Sun, Jul 9, 2017 at 4:45 PM, 井澤 毅 <a-iz...@mail.ecc.u-tokyo.ac.jp> > wrote: > >> Dear KK, >> >> I owe you a lot! I will check it as soon as possible. >> >> Since I am not familiar with this much, I would be very happy to tell me >> some urls describing "initialize". >> >> Best, >> >> Takeshi >> >> On 2017/07/10 7:38, Qiang Kou wrote: >> >> Hi, professor, >> >> I think the problem is in ge-r. cpp, you forgot to call *initialize*. >> >> The error has nothing to do with Rcpp. >> >> Best, >> >> KK >> >> On Tue, Jul 4, 2017 at 2:45 AM, 井澤 毅 <a-iz...@mail.ecc.u-tokyo.ac.jp> >> wrote: >> >>> Sorry, I forgot the attached file. >>> On 2017/07/04 18:43, 井澤 毅 wrote: >>> >>> Dear KK, >>> >>> Thanks for your kind reply. >>> >>> I am afraid that one of the input file is very heavy, this time but I am >>> sending a ZIP file including all. >>> >>> Please make v30 package using install.simulate_R_1.r and then >>> install.simulate_R_2.r. Then, try ge-r_test.r, please. >>> >>> To make the v30 package, we need ge-r.cpp, ge-model.cpp, ge-model.h, >>> ge-obs.cpp, ge-obs.h, ge-range.h. >>> >>> As the input file, we need var.mat.all matrix data in R and >>> obs.Os01g0182600_g1.nc file in the directry. >>> >>> Then, you will see the error I have been suffering from for a month. >>> >>> The obs.Os01g0182600_g1.nc file is a file containing environmental >>> fluctuation data. >>> >>> Best, >>> >>> Takeshi >>> >>> On 2017/07/04 5:40, Qiang Kou wrote: >>> >>> 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-iz...@mail.ecc.u-tokyo.ac.jp> >>> wrote: >>> >>>> Dear rcpp-devel@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@lists.r-forge.r-project.org >>>> https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel >>> >>> -- >>> Qiang Kou >>> q...@umail.iu.edu >>> School of Informatics and Computing, Indiana University >>> >>> -- >> Qiang Kou >> q...@umail.iu.edu >> School of Informatics and Computing, Indiana University >> >> -- > Qiang Kou > q...@umail.iu.edu > School of Informatics and Computing, Indiana University > > -- Qiang Kou q...@umail.iu.edu School of Informatics and Computing, Indiana University
_______________________________________________ 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