[Rcpp-devel] function modifying it self its argument

Pierre GLOAGUEN Pierre.Gloaguen at ifremer.fr
Thu Feb 26 16:37:24 CET 2015


Thanks, it works!
I'm not familiar with C++, is it necessary to always use such a function 
in C++ or is it because of R/C++ interface?
Thanks again for your help,

Pierre

Le 26/02/2015 16:30, Jeffrey Pollock a écrit :
> 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.Gloaguen at ifremer.fr <mailto:Pierre.Gloaguen at 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 at lists.r-forge.r-project.org
>     <mailto:Rcpp-devel at lists.r-forge.r-project.org>
>     https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.r-forge.r-project.org/pipermail/rcpp-devel/attachments/20150226/7d1c8ab7/attachment.html>


More information about the Rcpp-devel mailing list