Perhaps use the clone() function? library(Rcpp)
cppFunction(" NumericVector par_CMAtR(NumericVector vec_CMA) { NumericVector out = clone(vec_CMA); out[5] = exp(out[5]); return out; } ") vec_C <- rep(1, 6) par_CMAtR(vec_C) print(vec_C) On Thu, Feb 26, 2015 at 3:16 PM, Pierre GLOAGUEN <pierre.gloag...@ifremer.fr > wrote: > > Hello everybody, > > I have a very simple example > I have a vector vec_CMA which length is a multiple of 6. > I want to get the exact same vector, except the last element which is the > exponential of the last element of vec_CMA > The code is the following > > //myfun.cpp > #include <Rcpp.h> > using namespace Rcpp; > > // [[Rcpp::export]] > NumericVector par_CMAtR(NumericVector vec_CMA){ > int K = (vec_CMA.size())/6; > NumericVector out(6*K); > out = vec_CMA; > out[6*K-1] = exp(vec_CMA[6*K-1]); > return out; > } > > I apply the function with the R code > sourceCpp("myfun.cpp") > vec_C <- rep(1,6) > par_CMAtR(vec_C) > [1] 1 1 1 1 1 2.718282 > > 8 > > works fine. Except the vec_C is modified too! > vec_C > [1] 1 1 1 1 1 2.718282 > > It's the first time I have this kind of problem. What is wrong in my code? > Thanks for your help, > > Pierre Gloaguen > > > _______________________________________________ > Rcpp-devel mailing list > Rcpp-devel@lists.r-forge.r-project.org > https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel >
_______________________________________________ Rcpp-devel mailing list Rcpp-devel@lists.r-forge.r-project.org https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel