【发布时间】:2016-06-29 14:51:05
【问题描述】:
我在使用 Rcpp 中的简单代码时遇到问题。我的问题是我想通过将向量传递给函数来更改它。一个例子是:
//[[Rcpp::export]]
void ones(IntegerVector x, int lx){
int i;
for(i = 0; i < lx; i++){
x(i) = 1;
}
}
当我在 R 中做时:
x = rep(-1, 10)
ones(x, length(x))
向量 x 不变。我怎样才能解决这个问题?
编辑: 如果我将 x 作为 &x 传递,我该如何更改它的值?
编辑:在尝试了前两个答案中提出的两种方法后,没有任何改变。
编辑:重新启动 Rstudio,现在它可以工作了......这是 Rstudio 用户的常见问题吗?
【问题讨论】:
-
我不知道 rcpp,但在 c++ 中为了传递引用,您需要:“IntegerVector &x”而不是“IntegerVector x”
-
如果我这样做,我无法访问 x 的值。 (*x)[i]、*x[i]、(*x)(i) 和 (*x)(i) 不起作用。