我想我缺少了一些基本的东西,但是我不知道是什么:

    #include <Rcpp.h>
    using namespace Rcpp;
    // [[Rcpp::export]]

    NumericMatrix test(NumericVector x) {

    for(int i=0; i<100; i++)
    {
              NumericMatrix n_m1(4,5);
    }
    return n_m1;
    }


这给了我错误:

在此范围内未声明第17行“ n_m1”

第19行的控制到达非空函数[-Wreturn-type]的末尾

第一个错误显然是胡说八道。它与循环有关,因为如果我将其删除,它可以很好地工作。

任何帮助是极大的赞赏!

最佳答案

此变量(n_m1)的范围:

for(int i=0; i<100; i++)
{
              NumericMatrix n_m1(4,5);
}


是循环。因此,当然在循环之外您不能使用它。
均不退还。

要扩展方法级别上的定义:

NumericMatrix test(NumericVector x) {
    NumericMatrix n_m1(4,5);

    for(int i=0; i<100; i++)
    {
      // you can use it here now
    }

    return n_m1; // also here
    }


我上面定义变量的方式现在具有函数作用域-例如,您只能在函数内部使用它。如果要进一步扩展范围,也许可以考虑全局变量?如果有兴趣,您可以阅读有关该主题的更多信息,例如here

10-01 15:53