[Rcpp-devel] function modifying it self its argument
Jeffrey Pollock
jeffpollock9 at gmail.com
Thu Feb 26 16:30:58 CET 2015
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
> 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
> 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/7d2c53f4/attachment.html>
More information about the Rcpp-devel
mailing list