Ich vermute, das ist eine einfache Frage, aber ich bin neu in Cpp, und bin fest.Zwei rcpp Funktionen in der gleichen CPP-Datei
Ich habe eine Funktion in R erstellt, mit RCPP und:
// [[Rcpp::export]]
ich die Funktion in R nennen kann und es funktioniert wie vorgesehen. Nennen wir es F1()
.
Als nächstes möchte ich eine andere Funktion, F2()
, in der gleichen Datei Cpp erstellen, die die erste Funktion aufruft. Ich benutze Standard-Funktionsanrufsprache (d. H. F1(arguments)
), und kompiliert fein durch R, wenn ich sourceCpp()
verwende. Aber wenn ich versuche F2()
in R zu nennen, die ich erhalten:
Fehler bei eval (ausdr, envir, enclos): konnte nicht Funktion "F2"
Ratschläge finden?
Danke.
#include <Rcpp.h>
using namespace Rcpp;
// [[Rcpp::export]]
NumericVector F1(NumericVector x) {
return x * 2;
}
NumericVector F2(NumericVector x) {
return x *F1(x);
}
// even if i put return x*x*x instead of x*F1(X), I got the same error
/*** R
F1(42)
F2(51)
*/
Sie benötigen für jede exportierte Funktion eine Exportdeklaration. Wenn Sie sourceCpp mit verbose = TRUE aufrufen, können Sie genau sehen, welcher Code generiert wurde. – nrussell
Das ist eine doppelte Frage auch ... –