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){
}
我有一个 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){
}