我想我缺少了一些基本的东西,但是我不知道是什么:
#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