Rcpp - определяет функцию C++, которая принимает функцию R и аргумент с многоточием

У меня есть функция R bar это берет другую функцию R fooопределяется следующим образом:

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

Вызов bar будет иметь вид:

bar(foo, 1,2,3)

Теперь с foo как указано выше, я хочу создать версию C++ bar, Вот что я попробовал:

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

Это явно не работает. Как правильно определить эту функцию в C++?

Благодарю.

1 ответ

Решение

Может быть проще превратить ваш эллипсис в список перед передачей его в Rcpp

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

И тогда ваша функция Rcpp может просто взять Rcpp::List вместо многоточия.

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

}
Другие вопросы по тегам