我有一个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 ++中定义这个函数的正确方法是什么?
感谢。
答案 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){
}