[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