On 25 May 2013 at 06:50, Peng Yu wrote: | Hi Dirk, | | Here is what I got. Note that I have to used .Call and change the | arguments to the cpp function as SEXP and convert them to Function and | NumericVector inside the cpp function. | | But the example 2013-01-05-r-function-from-c++.cpp takes Function and | NumericVector as arguments directly. This calling syntax can not be | used in src/? In this case, does .Call have to be used in R/ (if | cppFunction is used then .Primitive rather than .Call is used)?
Try sourceCpp("somefile.cpp", verbose=TRUE) to see how the examples using Rcpp Attributes add an additional layer that deal with .Call and SEXP arguments. For your questions regarding .Call, consider the available documentation in "Writing R Extensions", in our Rcpp documentation and in other material covering R programming. Dirk | > callFunction | function (x, f) | .Primitive(".Call")(<pointer: 0x103c73120>, x, f) | | /tmp/testFunction$ cat R/rcpp_hello_world.R | rcpp_hello_world_R=function(f, x){ | .Call(rcpp_hello_world, f, x) | } | | /tmp/testFunction$ cat src/rcpp_hello_world.cpp | #include "rcpp_hello_world.h" | | SEXP rcpp_hello_world( | SEXP f | , SEXP x | ){ | using namespace Rcpp; | | Function ff(f); | NumericVector xx(x); | NumericVector res = ff(xx); | | return res; | } | | On Fri, May 24, 2013 at 8:44 AM, Dirk Eddelbuettel <e...@debian.org> wrote: | > | > On 24 May 2013 at 08:25, Peng Yu wrote: | > | > Stick callFunction() in that package. | > | | > | I have read the documents that you mentioned and I'm able to put other | > | functions in a package. The difference for "callFunction" is that it | > | takes Function as an argument so I'm not able to get the code work in | > | cxxfunction. Is there an exampling using cxxfunction (rather than the | > | sourceCpp and cppFunction examples given by Xiao) for | > | 2013-01-05-r-function-from-c++.cpp? Once I have a working example with | > | cxxfunction, I then should be able to put it in a package. | > | > Read the _basic_ Rcpp documentation and learn about the Function class. There | > is nothing special here. Here is a basic example: | > | > R> cppFunction('NumericVector applyFunction(Function f, NumericVector x) { return f(x); }') | > R> applyFunction(log, 1:10) | > [1] 0.000000 0.693147 1.098612 1.386294 1.609438 1.791759 1.945910 2.079442 2.197225 2.302585 | > R> applyFunction(sqrt, 1:10) | > [1] 1.00000 1.41421 1.73205 2.00000 2.23607 2.44949 2.64575 2.82843 3.00000 3.16228 | > R> | > | > Dirk | > | > -- | > Dirk Eddelbuettel | e...@debian.org | http://dirk.eddelbuettel.com | | | | -- | Regards, | Peng -- Dirk Eddelbuettel | e...@debian.org | http://dirk.eddelbuettel.com _______________________________________________ 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