Rcpp - 定义一个带有R函数和省略号参数的C ++函数

时间:2016-11-13 06:57:07

标签: c++ r rcpp ellipsis

我有一个R函数bar,它接受​​另一个R函数foo,定义如下:

foo <- function(x,y) x + y
bar <- function(foo, z, ...) z + foo(...)

bar的调用形式如下:

bar(foo, 1,2,3)

现在如上所述定义foo,我想创建一个bar的C ++版本。以下是我尝试过的内容:

library(Rcpp)
cppFunction(
'
  double bar(Function foo, double z, ...) {
  return z + foo(...);
 }
 ')

这显然不起作用。在C ++中定义这个函数的正确方法是什么?

感谢。

1 个答案:

答案 0 :(得分:6)

在将省略号转换为Rcpp

之前,可能更容易将其省略为列表
bar <- function(foo, z, ...) {
   args <- list(...)
   bar_internal(foo, z, args)
}

然后你的Rcpp函数可以简单地取Rcpp::List而不是省略号。

double bar_internal(Function foo, double z, List args){

}