У меня есть функция 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 ++?
Благодарю.
Может быть проще превратить ваш эллипсис в список перед передачей его в Rcpp
bar <- function(foo, z, ...) {
args <- list(...)
bar_internal(foo, z, args)
}
И тогда ваша функция Rcpp может просто взять Rcpp::List
вместо многоточия.
double bar_internal(Function foo, double z, List args){
}
Других решений пока нет …