[Rcpp-devel] Pass a function name as an argument.

Xiao He praguewatermelon at gmail.com
Sat May 18 19:31:51 CEST 2013

Hi everyone, I have two questions regarding passing a function name as an

(1). Suppose that I have a function foo() shown below. The function takes a
NumericVector and a function pointer that points to a function that takes a
NumericVector and returns a double. Note that the function pointer will
only point to functions not exposed to R.

double foo(NumericVector x, double (*f)(NumericVector x) ){
double output;
return output;

When I try to compile it as is using sourceCpp(), it's fine, but when I add
"// [[Rcpp::export]]" above the function definition, I get an error message:

Error in sourceCpp("foo.cpp") :
  Error 1 occurred building shared library.
foo.cpp:229: error: expected initializer before ‘SEXP’

So I wonder how I can fix this mistake.

(2). Imagine a more complex scenario: suppose there are two functions
available to be passed to foo(). But the two functions differ in the number
of arguments each has (see fun1() and fun2() below). I wonder if there is
any way to deal with this.

double fun1(NumericVector x){
double total=0;
 for(int i=0;i<x.size();i++)
 return total/10;

double fun2(NumericVector x, int n){
double total=0;
 for(int i=0;i<x.size();i++)
 return total/n;
 Thank you in advance!

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.r-forge.r-project.org/pipermail/rcpp-devel/attachments/20130518/16c975c9/attachment.html>

More information about the Rcpp-devel mailing list