Dear list,

Still pretty new to Rcpp and C++. I am trying to make a package that has multiple Rcpp functions. Some of the Rcpp functions call other Rcpp functions and I am wondering what is the most efficient method to handle this situation. Here is a example of how I am handling the function within function (examplified using inline rather than .cpp and .h file):

suppressMessages(library(inline))
f1src <- '
  NumericVector x(1);
  x = 9;
  return x;
'
f1 <- cxxfunction(signature(),  body = f1src, plugin = "Rcpp")
f1()

f2src <- '
  Function fx1(f1);
  NumericVector x = fx1();
  x[0] = x[0] + 1;
  return x;
'
f2 <- cxxfunction(signature(f1 = "function"), body = f2src, plugin = "Rcpp")
f2(f1)

I was wondering whether there are more efficient ways to do this. I could think of 3 potential options but I cannot make them work. 1. Include a call to the header of function f1 in the .cpp file of function f2 or include both functions in one set of header and .cpp files? But I'm not sure how to do this properly. 2. Using Rcpp Module? But from what I understand the modules mainly help to remove the .Call in the R session not changing things in the Rcpp code. But maybe I'm wrong? 3. Defining the function directly within the other Rcpp function? Something like (this doesn't work):
suppressMessages(library(inline))
f3src <-'
  NumericVector f1 (){
    NumericVector x = 9;
    return x;
  }

  NumericVector y = f1();
  y[0] = y[0] + 1;
  return y;
'
f3 <- cxxfunction(signature(),  body = f3src, plugin = "Rcpp")

Any help will be appreciated!

Marie




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

Reply via email to