R studio аварийно завершает работу при запуске Rcpp - PullRequest
0 голосов
/ 06 июня 2018

Я понимаю, что RO не является отладочной платформой, но я новичок в Rcpp, так что, надеюсь, кто-то может помочь мне, почему эта ошибка происходит, так как я не уверен, что это связано с функцией Rstudio или Rccp.

Пример данных здесь.Причина, по которой я помещаю исходные данные, заключается в том, чтобы люди могли воспроизвести ошибки, которые у меня возникают.

https://www.dropbox.com/s/s9xgu5h0qfojy9q/test.csv?dl=0

test <- read.csv("test.csv")
test <- data.table(test)

Ниже приведена функция, которую я получил из одной из моих публикаций с использованием Rcpp:

Rcpp::cppFunction('
              List WRSI(NumericVector daily_tawc,
              NumericVector TAWC,
              NumericVector Precp,
              NumericVector swc,
              NumericVector PETc) {

              int n = daily_tawc.length();
              NumericVector SW(n);
              NumericVector PAW(n);
              NumericVector AETc(n);

              double SW_ini_glob = daily_tawc[0];
              double SW_max_glob = TAWC[0];

              SW[0] = SW_ini_glob;

              for (int i = 1; i <= n; i++) {

              PAW[i] = SW[i-1] + Precp[i];

              if (PAW[i] >= swc[i]) {
              AETc[i] = PETc[i];
              } else {
              AETc[i] = PAW[i]/swc[i]*PETc[i];
              }

              if (AETc[i] > PAW[i]) {
              AETc[i] = PAW[i];
              }

              SW[i] = SW[i-1] + Precp[i] - AETc[i];

              if(SW[i] > SW_max_glob) {
              SW[i] = SW_max_glob;
              }

              if(SW[i] < 0) {
              SW[i] = 0;
              }
              }
              return Rcpp::List::create(Rcpp::Named("SW") = SW,
              Rcpp::Named("PAW") = PAW,
              Rcpp::Named("AETc") = AETc);
              }')

Когда я запускаю вышеуказанную функцию длятестовые данные,

  test[, c("SW","PAW","AETc") := WRSI(daily_tawc,
                                       TAWC,
                                       Precp,
                                       swc,
                                       PETc), keyby = .(state.id,meso.id,micro.id,mun.id,year)]

enter image description here

Каждый раз, когда происходит сбой Rstudio.Мне было интересно, если кто-то может сказать мне, что это не так?Каковы вероятные причины сбоя Rstudio при запуске вышеуказанной функции.Я не уверен, что в функции есть что-то, что приводит к сбою моего Rstudio.

Спасибо

1 Ответ

0 голосов
/ 06 июня 2018

Не вдаваясь в детали и не ища дубликаты:

for (int i = 1; i <= n; i++)

Это выглядит неправильно.Вероятно, следует читать

for (int i = 0; i < n; i++)
...