Rcpp - 定义采用 R 函数和省略号参数的 C++ 函数

Rcpp - Define a C++ function that takes an R function and an ellipsis argument

我有一个 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++ 中定义此函数的正确方法是什么?

谢谢。

在将省略号输入 Rcpp 之前将其转换为列表可能更容易

bar <- function(foo, z, ...) {
   args <- list(...)
   bar_internal(foo, z, args)
}

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

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

}