
Last chance! 50% off unlimited learning
Sale ends in
sourceCpp
parses the specified C++ file or source code and looks for functions marked with the Rcpp::export
attribute
and RCPP_MODULE declarations. A shared library is then built and its exported functions and Rcpp modules are made available in the specified environment.sourceCpp(file = "", code = NULL, env = globalenv(),
embeddedR = TRUE, rebuild = FALSE,
showOutput = verbose, verbose = getOption("verbose"))
TRUE
to run embedded R code chunks.TRUE
to print R CMD SHLIB
output to the console.TRUE
to print detailed information about generated code to the console.functions
Names of exported functions
modules
Names of Rcpp modules
}code
parameter is provided then the file
parameter is ignored. Functions exported using sourceCpp
must meet several conditions,
including being defined in the global namespace and having return types
that are compatible with Rcpp::wrap
and parameter types that are
compatible with Rcpp::as
.
See the Rcpp::export
documentation for more details.
Content of Rcpp Modules will be automatically loaded into the specified
environment using the Module
and
populate
functions.
If the source file has compilation dependencies on other
packages (e.g. Rcpp::depends
attribute
should be provided naming these dependencies.
It's possible to embed chunks of R code within a C++ source file by
including the R code within a block comment with the
prefix of /*** R
. For example:
/*** R
# Call the fibonacci function defined in C++ fibonacci(10)
*/
Multiple R code chunks can be included in a C++ file. R code is sourced after the C++ compliation is completed so all functions and modules will be available to the R code.
Rcpp::export
, Rcpp::depends
, cppFunction
, evalCpp
sourceCpp("fibonacci.cpp")
sourceCpp(code='
#include <Rcpp.h>
// [[Rcpp::export]]
int fibonacci(const int x) {
if (x == 0) return(0);
if (x == 1) return(1);
return (fibonacci(x - 1)) + fibonacci(x - 2);
}'
)
Run the code above in your browser using DataLab