[Rcpp-devel] function modifying it self its argument
Dirk Eddelbuettel
edd at debian.org
Thu Feb 26 16:51:16 CET 2015
On 26 February 2015 at 16:37, Pierre GLOAGUEN wrote:
| 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?
Please use a Google search (or equivalent) for Rcpp::clone. This has been
discussed extensively on numerous occassions.
Dirk
| 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> 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
|
|
|
| _______________________________________________
| 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
--
http://dirk.eddelbuettel.com | @eddelbuettel | edd at debian.org
More information about the Rcpp-devel
mailing list