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.gloag...@ifremer.fr <mailto: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
<mailto: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