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 ++?

Благодарю.

0

Решение

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

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

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

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

}
6

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]