Я пытаюсь обновить переменную в al oop, но получаю ошибку
stati c Утверждение не удалось: невозможно преобразовать тип в SEXP
Я пытаюсь воспроизвести следующий код R в R cpp:
> v = rep(1, 5)
> for(k in 0:3){
+ v = cumsum(v)
+ }
> print(v)
[1] 1 5 15 35 70
Я предпринял следующие попытки (раскомментирование / комментирование соответствующих фрагментов кода), но все они дают ту же ошибку. Как я могу это сделать и что я делаю не так, пожалуйста?
#include <Rcpp.h>
using namespace Rcpp;
// [[Rcpp::export]]
IntegerVector fun() {
IntegerVector v = rep(1, 5);
// Attempt 1.
for(int k = 0; k < 4; ++k){
v = cumsum(v);
}
// Attempt 2.
// IntegerVector tempv;
// for(int k = 0; k < 4; ++k){
// tempv = cumsum(v);
// v = tempv;
// }
// can reproduce error more simply with the following:
// so issue is assigning back to variable or change of class?
// v = cumsum(v);
// Attempt 3.
// IntegerVector tempv;
// for(int k = 0; k < 4; ++k){
// tempv = cumsum(v);
// v = as<IntegerVector>(tempv);
// }
return v;
}
РЕДАКТИРОВАТЬ:
Хорошо, у меня что-то работает (спасибо это )
#include <Rcpp.h>
using namespace Rcpp;
// [[Rcpp::export]]
IntegerVector fun() {
IntegerVector v = rep(1, 5);
for(int k = 0; k < 4; ++k){
std::partial_sum(v.begin(), v.end(), v.begin());
}
return v;
}
Итак, я полагаю, что мой вопрос в том, что я делал неправильно раньше? Спасибо