Rcpp 为 运行 时 R studio 崩溃
R studio crashes when Rcpp is run
我知道 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)]
每次 Rstudio 崩溃。我想知道是否有人可以告诉我这是什么错误? 运行 执行上述功能时 Rstudio 崩溃的可能原因是什么。我不确定函数中是否有某些东西导致我的 Rstudio 崩溃。
谢谢
无需详细说明或搜索重复项:
for (int i = 1; i <= n; i++)
这看起来不对。应该是
for (int i = 0; i < n; i++)
我知道 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)]
每次 Rstudio 崩溃。我想知道是否有人可以告诉我这是什么错误? 运行 执行上述功能时 Rstudio 崩溃的可能原因是什么。我不确定函数中是否有某些东西导致我的 Rstudio 崩溃。
谢谢
无需详细说明或搜索重复项:
for (int i = 1; i <= n; i++)
这看起来不对。应该是
for (int i = 0; i < n; i++)