[Rcpp-devel] compileAttributes() does not export function
JJ Allaire
jj.allaire at gmail.com
Sat Sep 27 12:55:03 CEST 2014
You need two colons after Rcpp in the attribute, e.g. Rcpp::export
On Sat, Sep 27, 2014 at 6:30 AM, Kevin Kunzmann <kevinkunzmann at gmx.net> wrote:
> Hi,
>
> I am experiencing a problem with the 'export' attribute. The file
> 'cmest.cpp' is compiled all right, but Rcpp misses the function 'cv' both in
> RcppExports.cpp as well as RcppExports.R - the compileAttributes() function
> ignores the export statement. Other functions are exported correctly form
> the same project / source folder! Any Idea?
>
> Best,
>
> Kevin
>
> #include <RcppArmadillo.h>
>
> // [[Rcpp::depends(RcppArmadillo)]]
>
> // [[Rcpp:export]]
> Rcpp::List cv(arma::mat data, int n)
> {
> // n must be small enough!
>
> // find stage one indices
> arma::Col<int> inds = arma::Col<int>(data.n_rows);
> int nStageOne = 0;
> for(int i = 0; i < data.n_rows; i++)
> {
> inds(nStageOne) = i;
> nStageOne += 1;
> }
> inds.set_size(nStageOne);
>
> // randomize indices
> inds = arma::shuffle(inds);
>
> // select first n items from each subgroup (marker x treatment)
> arma::mat res = arma::zeros<arma::mat>(data.n_rows - 4*n,
> data.n_cols);
> int nRes = 0;
> arma::mat oob = arma::zeros<arma::mat>(n*4, data.n_cols);
> arma::Col<int> nCount = arma::zeros<arma::Col<int> >(4);
> for(int i = 0; i < nStageOne; i++)
> {
> if(data(inds(i), 1) == 0 && data(inds(i), 3) == 0 && nCount(0) < n)
> {
> // 00
> for(int j = 0; j < data.n_cols; j++)
> {
> oob(sum(nCount), j) = data(inds(i), j);
> }
> nCount(0) += 1;
> continue;
> }
> if(data(inds(i), 1) == 0 && data(inds(i), 3) == 1 && nCount(1) < n)
> {
> // 01
> for(int j = 0; j < data.n_cols; j++)
> {
> oob(sum(nCount), j) = data(inds(i), j);
> }
> nCount(1) += 1;
> continue;
> }
> if(data(inds(i), 1) == 1 && data(inds(i), 3) == 0 && nCount(2) < n)
> {
> // 00
> for(int j = 0; j < data.n_cols; j++)
> {
> oob(sum(nCount), j) = data(inds(i), j);
> }
> nCount(2) += 1;
> continue;
> }
> if(data(inds(i), 1) == 1 && data(inds(i), 3) == 1 && nCount(3) < n)
> {
> // 00
> for(int j = 0; j < data.n_cols; j++)
> {
> oob(sum(nCount), j) = data(inds(i), j);
> }
> nCount(3) += 1;
> continue;
> }
> // else
> for(int j = 0; j < data.n_cols; j++)
> {
> res(nRes, j) = data(inds(i), j);
> }
> nRes += 1;
> }
> return Rcpp::List::create(Rcpp::Named("data") = res,
> Rcpp::Named("oob") = oob);
> }
> _______________________________________________
> Rcpp-devel mailing list
> Rcpp-devel at lists.r-forge.r-project.org
> https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel
More information about the Rcpp-devel
mailing list