RCCP
Default Packages in R
base
stats
utils
methods
graphics
grDevices
datasets
grid
tools
tcltk
splines
stats4
Installation
Install R(2.13.0) as following-
$./configure --enable-R-shlib --enable-BLAS-shlib --with-ICU --with-x=no
$make
$sudo make install
Now Install Rcpp(0.9.4) and RInside(0.2.3) as following:
$sudo R CMD INSTALL Rcpp_0.9.4.tar.gz
$sudo R CMD INSTALL RInside_0.2.3.tar.gz
and most crucial step...!! edit ~/.bashrc and add following :::
LD_LIBRARY_PATH=/usr/local/lib/R/lib
export LD_LIBRARY_PATH
Hello, world!
#include <R.h>
#include <R_ext/Applic.h>
#include <Rinternals.h>
#include <RInside.h>
// for the embedded R via RInside
int main(int argc, char *argv[])
{
RInside R(argc, argv); // create an embedded R instance
R["txt"] = "Hello, world!\n"; // assign a char* (string) to ’txt’
R.parseEvalQ("cat(txt)"); // eval init string, ignore any returns
exit(0);
}
Addition
#include <RInside.h>
// for the embedded R via RInside
int main(int argc, char *argv[])
{
RInside R(argc, argv);
// create an embedded R instance
R["x"] = 10 ;
R["y"] = 20 ;
R.parseEvalQ("z <- x + y") ;
int sum = R["z"];
std::cout << "10 + 20 = " << sum << std::endl ;
exit(0);
}
Predection
#include <R.h>
#include <R_ext/Applic.h>
#include <Rinternals.h>
#include <RInside.h>
// for the embedded R via RInside
int main(int argc, char *argv[])
{
//create an embedded R instance
RInside R(argc, argv);
//library
R.parseEvalQ("suppressMessages(library(forecast))");
R.parseEvalQ("suppressMessages(library(graphics))");
R.parseEvalQ("suppressMessages(library(stats))");
//Inputs
R["gap"] = 50;
R["start"] = 0;
R["end"] = 200;
R["sum"] = 0;
//read file
R["input_file"]="akiyo.txt";
R["output_file"]="a.txt\n";
R.parseEvalQ("trace=scan(input_file)") ;
R.parseEvalQ("size<-length(trace)") ;
R.parseEvalQ("arr<-trace[start:end]") ;
//forecast
R.["css"]="CSS";
R.parseEvalQ("x_arima<-arima(arr_in,order=c(1,0,1),seasonal=list(order=c(1,1,1),period=16),method=c(css))");
//R.parseEvalQ("x_arima<-arima(arr, order=c(1,0,1),seasonal=list( order=c(1,1,1),period=16))") ;
R.parseEvalQ("b_arima<-forecast(x_arima,gap)") ;
R["x"] = 10 ;
R["y"] = 20 ;
R.parseEvalQ("z <- x + y") ;
float sum[50];
R.parseEvalQ("arr<-c(1:50)") ;
R.parseEvalQ("arr<-b_arima$mean") ;
for(int i=1;i<=50;i++)
{
char txt[50];
sprintf(txt, "z <- arr[%d]; z", i);
sum[i-1] = R.parseEval(txt);
//sprintf(txt, "z <- arr[%d]", i);
//R.parseEvalQ(txt);
//sum[i-1] = R["z"];
}
//for(int i=0;i<50;i++)
//std::cout << "value at "<< i+1<<" : "<< sum[i] << std::endl ;
exit(0);
}
#include <RInside.h>
int main(int argc, char *argv[]) {
RInside R(argc, argv);
float sum[5];//int sum[50];
R.parseEvalQ("arr <- c(1:50)") ;
for(int i=1;i<=5;i++) {
char txt[32];
sprintf(txt, "z <- arr[%d]; z", i);
sum[i-1] = R.parseEval(txt);
//sprintf(txt, "z <- arr[%d]", i);
//R.parseEvalQ(txt);
//sum[i-1] = R["z"];
}
for(int i=0;i<5;i++)
std::cout << "value: " << sum[i] << std::endl ;
exit(0);
}