# revdep/library/simts/new/Rcpp/examples/functionCallback/newApiExample.r In SMAC-Group/simts: Time Series Analysis Tools

```#!/usr/bin/env r

suppressMessages(library(Rcpp))

# R function that will be called from C++
vecfunc <- function(x) {
y <- x^1.05                         # do a transformation
print(y)                            # but also print
plot(y, ylim=c(1,8), type='b')      # and even plot
Sys.sleep(0.225)                    # sleep before next call
return(y)
}

## NOTE: This is the old way to compile Rcpp code inline.
## The code here has left as a historical artifact and tribute to the old way.
## Please use the code under the "new" inline compilation section.

suppressMessages(library(inline))

# C++ source code to operate on function and vector
cpp <- '
int n = as<int>(N);
NumericVector numvec(xvec) ;
Function f(fun) ;
for( int i=0; i<n; i++){
numvec = f( numvec ) ;
}
return numvec ;
'

# create a C++ function
funx <- cxxfunction(signature(N = "integer" , xvec = "numeric", fun = "function" ),
body=cpp, include = "using namespace Rcpp; ", plugin = "Rcpp")

## NOTE: Within this section, the new way to compile Rcpp code inline has been
## written. Please use the code next as a template for your own project.

# C++ source code to operate on function and vector
cppFunction('
NumericVector funx(int n, NumericVector numvec, Function f){
for( int i = 0; i < n; i++ ){
numvec = f( numvec ) ;
}
return numvec ;
}')

# create the vector
xvec <- sqrt(c(1:12, 11:1))

# set up x11
x11(width=3,height=3)
par(mar=c(3,3,1,1),cex=0.8, pch=19)

# run example
funx( 10L, xvec, vecfunc )
```
SMAC-Group/simts documentation built on Sept. 4, 2023, 5:25 a.m.