I ein R-Funktion bar
haben, die eine andere R-Funktion foo
, definiert wie folgt möglich:RCPP - Definieren einer C++ Funktion, die eine R-Funktion und ein Auslassungszeichen Argument nimmt
foo <- function(x,y) x + y
bar <- function(foo, z, ...) z + foo(...)
Ein Aufruf von bar
würde der sein, Form:
bar(foo, 1,2,3)
Jetzt mit foo
wie oben definiert, ich möchte eine C++ Version von bar
erstellen. Hier ist, was ich versucht habe:
library(Rcpp)
cppFunction(
'
double bar(Function foo, double z, ...) {
return z + foo(...);
}
')
Dies funktioniert eindeutig nicht. Was wäre der richtige Weg, um diese Funktion in C++ zu definieren?
Danke.
Wenn Sie 'foo' und alle Argumente ('...') auf der R-Seite, warum nicht passieren nur das Ergebnis von 'foo (...)' in die RCPP Funktion? Das Auswerten von 'foo (..)' aus C++ ist * immer * langsamer als das Auswerten von 'foo (...)' direkt von der R-Seite. – nrussell