cxxfunction {inline} | R Documentation |
Functionality to dynamically define an R function with inlined C++ code
using the .Call
calling convention
cxxfunction(sig = character(), body = character(), plugin = "default", includes = "", settings = getPlugin(plugin), ..., verbose = FALSE)
sig |
Signature of the function. A named character vector |
body |
A character vector with C++ code to include in the body of the compiled C++ function |
plugin |
Name of the plugin to use. See |
includes |
User includes, inserted after the includes provided by the plugin. |
settings |
Result of the call to the plugin |
... |
Further arguments to the plugin |
verbose |
verbose output |
A function
## Not run: # default plugin fx <- cxxfunction( signature(x = "integer", y = "numeric" ) , ' return ScalarReal( INTEGER(x)[0] * REAL(y)[0] ) ; ' ) fx( 2L, 5 ) # Rcpp plugin if( require( Rcpp ) ){ fx <- cxxfunction( signature(x = "integer", y = "numeric" ) , ' return wrap( as<int>(x) * as<double>(y) ) ; ', plugin = "Rcpp" ) fx( 2L, 5 ) } # RcppArmadillo plugin if( require( RcppArmadillo ) ){ fx <- cxxfunction( signature(x = "integer", y = "numeric" ) , ' int dim = as<int>( x ) ; arma::mat z = as<double>(y) * arma::eye<arma::mat>( dim, dim ) ; return wrap( arma::accu(z) ) ; ', plugin = "RcppArmadillo" ) fx( 2L, 5 ) } ## End(Not run)