没有参数的 Rcpp 函数
Rcpp function with no argument
我正在使用 Rcpp 开发 R 包,现在我试图包含以下没有输入参数的 c++ 函数:
int printVariables() {
// Code
return 0;
}
我的RcppExports.cpp
下一个函数:
int printVariables();
RcppExport SEXP printVariables() {
BEGIN_RCPP
Rcpp::RObject __result;
Rcpp::RNGScope __rngScope;
__result = Rcpp::wrap(printVariables());
return __result;
END_RCPP
}
最后,在 RcppExports.R 我有一个条目如下:
printVariables <- function() {
.Call('printVariables', PACKAGE = 'my_package')
}
当我编译代码时出现此错误:
RcppExports.cpp: In function ‘SEXPREC* printVariables()’:
RcppExports.cpp:54:37: error: ambiguating new declaration of ‘SEXPREC* printVariables()’
RcppExport SEXP printVariables() {
RcppExports.cpp:53:5: note: old declaration ‘int printVariables()’
int printVariables();
有人知道我该如何解决这个问题吗?
只需在此处放置一个被忽略的参数即可。 Return 类型 void
有效,但你 必须 至少有一个你可以随意忽略的参数。
R> cppFunction("void foo(int ignored=0) { double d; }")
R> foo()
R>
查看 Rcpp Attributes vignette 了解所有精彩细节。
编辑 我确实得到了纠正,感谢@hrbrmstr,他正确地指出这个当然在一个包中工作。 IE。即使是 RStudio 创建的示例函数,当被要求执行文件 -> 新项目 -> 新目录 -> R 包时,当 'Package w/ Rcpp' 为 select 时,也有这样的:
// [[Rcpp::export]]
List rcpp_hello() {
CharacterVector x = CharacterVector::create("foo", "bar");
NumericVector y = NumericVector::create(0.0, 1.0);
List z = List::create(x, y);
return z;
}
这显然是 sans 论点。
我正在使用 Rcpp 开发 R 包,现在我试图包含以下没有输入参数的 c++ 函数:
int printVariables() {
// Code
return 0;
}
我的RcppExports.cpp
下一个函数:
int printVariables();
RcppExport SEXP printVariables() {
BEGIN_RCPP
Rcpp::RObject __result;
Rcpp::RNGScope __rngScope;
__result = Rcpp::wrap(printVariables());
return __result;
END_RCPP
}
最后,在 RcppExports.R 我有一个条目如下:
printVariables <- function() {
.Call('printVariables', PACKAGE = 'my_package')
}
当我编译代码时出现此错误:
RcppExports.cpp: In function ‘SEXPREC* printVariables()’:
RcppExports.cpp:54:37: error: ambiguating new declaration of ‘SEXPREC* printVariables()’
RcppExport SEXP printVariables() {
RcppExports.cpp:53:5: note: old declaration ‘int printVariables()’
int printVariables();
有人知道我该如何解决这个问题吗?
只需在此处放置一个被忽略的参数即可。 Return 类型 void
有效,但你 必须 至少有一个你可以随意忽略的参数。
R> cppFunction("void foo(int ignored=0) { double d; }")
R> foo()
R>
查看 Rcpp Attributes vignette 了解所有精彩细节。
编辑 我确实得到了纠正,感谢@hrbrmstr,他正确地指出这个当然在一个包中工作。 IE。即使是 RStudio 创建的示例函数,当被要求执行文件 -> 新项目 -> 新目录 -> R 包时,当 'Package w/ Rcpp' 为 select 时,也有这样的:
// [[Rcpp::export]]
List rcpp_hello() {
CharacterVector x = CharacterVector::create("foo", "bar");
NumericVector y = NumericVector::create(0.0, 1.0);
List z = List::create(x, y);
return z;
}
这显然是 sans 论点。