<html>
  <head>
    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <div class="moz-text-flowed" style="font-family: -moz-fixed;
      font-size: 14px;" lang="x-unicode">Dear
      <a class="moz-txt-link-abbreviated" href="mailto:rcpp-devel@lists.r-forge.r-project.org">rcpp-devel@lists.r-forge.r-project.org</a>,
      <br>
      <br>
      Sorry for bothering you much, but do me a favor please. Please
      help me some.
      <br>
      <br>
      I am just a molecular biologist working on plants. Thus, I am
      still a newcomer in this field.
      <br>
      <br>
      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.
      <br>
      <br>
      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.
      <br>
      <br>
      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.
      <br>
      <br>
      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.
      <br>
      <br>
      Please give me an advice, please. Of course, I can give you more
      information on the C++ script in details if you need.
      <br>
      <br>
      Best regards,
      <br>
      <br>
      Takeshi <br>
      <br>
      <br>
      <br>
    </div>
    ge-r.cpp<br>
    <br>
    #ifndef __R__
    <div class="moz-text-plain" wrap="true" graphical-quote="true"
      style="font-family: -moz-fixed; font-size: 14px;" lang="x-unicode">
      <pre wrap="">#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);
        }
}
</pre>
    </div>
  </body>
</html>