Rcpp:将元素存储到向量的子集

Rcpp: Storing elements to subset of vector

我仍在思考来自 R 上下文的 Rcpp 逻辑,所以请耐心等待!来自以下代码:

Cjplus <- c(0,0)
Kseq <- c(1,2)
cand <- c(0,1)
cppFunction("NumericVector test(NumericVector Cjplus, NumericVector Kseq,
                   NumericVector cand, int i) {
  NumericVector A = as<NumericVector>(Cjplus[Kseq-1]);
  int B = cand[i-2];
  as<NumericVector>(Cjplus[Kseq-1]) = A + B;
  return Cjplus[Kseq-1];
}")
test(Cjplus, Kseq, cand, 3)

我希望得到 [1] 1 1 作为我的输出,但我得到的却是 [1] 0 0。我在这里索引不正确吗?

我不明白你为什么要尝试使用 subset-assignment。

Cjplus <- c(0,0)
Kseq <- c(1,2)
cand <- c(0,1)

cppFunction("NumericVector test(NumericVector Cjplus, NumericVector Kseq,
                   NumericVector cand, int i) {
  NumericVector A = Cjplus[Kseq-1];
  double B = cand[i-2];
  A = A + B;
  return A;
}")
test(Cjplus, Kseq, cand, 3)
#[1] 1 1

编辑:

这是 subset-assignment 的版本。

library(Rcpp)
cppFunction("NumericVector test(const NumericVector Cjplus, NumericVector Kseq,
                   NumericVector cand, int i) {
  NumericVector C = clone(Cjplus);
  NumericVector A = C[Kseq-1];
  double B = cand[i-2];
  A = A + B;
  C[Kseq-1] = A;
  return C;
}")
test(Cjplus, Kseq, cand, 3)
#[1] 1 1