RcppExample               package:Rcpp               R Documentation

_R_c_p_p _R / _C++ _i_n_t_e_r_f_a_c_e _e_x_a_m_p_l_e

_D_e_s_c_r_i_p_t_i_o_n:

     'RcppExample' illustrates how the 'Rcpp' R/C++ interface class
     library is used.

_U_s_a_g_e:

     RcppExample(params, nlist, numvec, nummat, df, datevec, stringvec,
     fnvec, fnlist)
     ## S3 method for class 'RcppExample':
     print(x,...)

_A_r_g_u_m_e_n_t_s:

  params: A heterogeneous list specifying 'method' (string),
          'tolerance' (double), 'maxIter' (int).

   nlist: a list of named numeric values (double or int).

  numvec: a numeric 1D vector (double or int).

  nummat: a numeric 2D matrix (double or int).

      df: a data frame.

 datevec: a vector of Date's.

stringvec: a vector of strings.

   fnvec: an R function with numeric vector argument.

  fnlist: an R function with list argument.

       x: Object of type 'RcppExample'.

     ...: Extra named parameters.

_D_e_t_a_i_l_s:

     The C++ represention of data frames are not passed back to R in a
     form that R recognizes as a data frame, but it is a simple matter
     to do the conversion. For example, the return value named 'PreDF'
     (see return values below) is not seen as a data frame on the R
     side (thus the name "pre-data frame"), but it can be converted to
     a data frame using 'df <- data.frame(result$PreDF)'.

     The print.RcppExample() function is defined so that we can control
     what gets printed when a variable assigned the return value is
     entered on a line by itself. It is defined to simply list the
     names of the fields returned (see RcppExample.R).

     The source files for this example and for the 'Rcpp' class library
     can be found in the RcppTemplate package source archive (the
     .tar.gz file).

_V_a_l_u_e:

     'RcppExample' returns a list containing: 

  method: string input paramter

tolerance: double input paramter

 maxIter: int input parameter

nlFirstName: first name in nlist

nlFirstValue: first value in nlist

    matD: R matrix from an RcppMatrix<double> object

  stlvec: R vector from a vector<double> object

  stlmat: R matrix from a vector<vector<double> > object

       a: R matrix from C/C++ matrix

       v: R vector from C/C++ vector

 strings: R vector of strings from vector<string> object

 InputDF: a data frame passed in from R

   PreDF: a data frame created on C++ side to be passed back to R

  params: input parameter list (this is redundant because we returned
          the input parameters above)

_A_u_t_h_o_r(_s):

     Dominick Samperi wrote most of Rcpp during 2005 and 2006.  Dirk
     Eddelbuettel made some additions, and became maintainer in 2008.

_R_e_f_e_r_e_n_c_e_s:

     Samperi, D., (2006) _Rcpp: R/C++ Interface Classes: Using C++
     Libraries from R_, available as a package vignette, or in the
     'RcppTemplate' package 'doc' subdirectory ('RcppAPI.pdf').

     _Writing R Extensions_, available at <URL:
     http:www.r-project.org>.

_E_x_a_m_p_l_e_s:

     params <- list(method='BFGS',
                    tolerance=1.0e-8,
                    maxIter=1000,
                    startDate=as.Date('2006-7-15'))

     nlist <- list(ibm = 80.50, hp = 53.64, c = 45.41)

     numvec <- seq(1,5) # numerical vector

     nummat <- matrix(seq(1,20),4,5) # numerical matrix

     stringvec <- c("hello", "world", "fractal") # string vector

     datestr <- c('2006-6-10', '2006-7-12', '2006-8-10')
     datevec <- as.Date(datestr, "%Y-%m-%d") # date vector

     df <- data.frame(a=c(TRUE, TRUE, FALSE), b=I(c('a','b','c')),
     c=c('beta', 'beta', 'gamma'), dates=datevec)

     fnvec <- function(x) { sum(x) } # Add up components of vector

     fnlist <- function(l) { # Return vector with 1 added to each component
       vec <- c(l$alpha + 1, l$beta + 1, l$gamma + 1)
       vec
     }

     result <- RcppExample(params, nlist, numvec, nummat, df, datevec,
                           stringvec, fnvec, fnlist)

     result

