[Rcpp-devel] [Rcpp] How can i call a R function in Cpp source code?

Dirk Eddelbuettel edd at debian.org
Tue Aug 5 14:50:02 CEST 2014


On 5 August 2014 at 17:30, super wrote:
| 
| Yes , maybe that is very close to my needs , sorry for my pool english
| expression. But, the following code can't work:
| double meanC(NumericVector x) {
|    Function mean=Environment("package::base")["mean"];
|    return mean(x);   
| }
| with the error "can't convert SEXP to double"
| How can i fix it ? Tks.

With all due respect:

 i)    you have not motivated why you need mean from R

 ii)   how to call an R function from Rcpp as been discussed on this list
       probably half a dozen times by now, so please consider learning how to
       search the list archive via Google 

 iii)  you are showing a somewhat larger amount of unfamiliarity with Rcpp

 iv)   you are hiding behind an anon mail handle in violation of the common
       R mailing list standards we follow here too

so I am not going out of my way to repeat all of which you can already find
via ii) another time for you.

Dirk


| At 2014-08-05 04:30:32, "Romain Francois" <romain at r-enthusiasts.com> wrote:
| 
|     Not sure what you mean by hide the R function. You can extract a function
|     by its name on the C++ side : 
| 
|     Function bazinga("mean") ;
| 
|     or extract it from a particular environment, e.g.
| 
|     Environment("package:base")["mean"]
| 
|     or 
| 
|     Environment base("package:base") ; 
|     Function foo = base["mean"]
| 
|     Romain
| 
|     Le 5 août 2014 à 09:26, super <rcppmail at 163.com> a écrit :
| 
| 
|         Hello Rcppusers,
|           I want to call  a  r function in Cpp code, e.g.
|          int  meanC( NumericVector x) {
|             return mean(x,_["na.rm"]=TRUE);
|         }
|         Here function mean is a r function not rewrittened  Rcpp version's
|         mean. I do know one way to do this:
|          int  meanC( Function f,NumericVector x) {
|             return f(x,_["na.rm"]=TRUE);
|         }
|         Then  meanC(mean,1:3)
|         but can i hidden the true r function called ?  Is  r functions packed
|         into some namespace?
| 
| 
| 
| 
|         _______________________________________________
|         Rcpp-devel mailing list
|         Rcpp-devel at lists.r-forge.r-project.org
|         https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel
| 
| 
| 
| 
| 
| _______________________________________________
| Rcpp-devel mailing list
| Rcpp-devel at lists.r-forge.r-project.org
| https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel

-- 
http://dirk.eddelbuettel.com | @eddelbuettel | edd at debian.org


More information about the Rcpp-devel mailing list