Ich verwende die folgenden Schritte mein eigenes Paket zu erreichen:Rcpp: Warum kann ich die Funktion in meinem definierten Paket nicht ausführen?
1) Ich versuche, eine sehr einfache Funktion zu schreiben, wie folgt:
#include <Rcpp.h>
using namespace Rcpp;
// [[Rcpp::export]]
int foo() {
return 6;
}
2) Ich verwende Skelett es in ein Paket zu machen:
Rcpp.package.skeleton("newpackage",example_code=FALSE,cpp_files=c("New.cpp"))
3) I laufen CPP mit Befehl:
source("~/newpackage/src/New.cpp")
4) laufen compileAttributes das Paket laden:
compileAttributes(pkgdir="/home/tw72/newpackage",verbose = getOption("verbose"))
Danach möchte ich die Funktion in R nennen:
foo <- function()
{
.Call("foo",PACKAGE="newpackage")
}
Dann ist der Fehler:
Error in .Call("foo", PACKAGE = "newpackage") :
"foo" nicht verfügbar für .Call() für Paket "newpackage"
Ich traf die gleiche problem, aber ich kann immer noch nicht herausfinden, was passiert. Können Sie mir helfen? Was ist los mit meinen obigen Schritten? Vielen Dank.
Vielen Dank für Ihre Antwort! Ich versuche aber, wenn ich foo <- function() { .Call ("foo", PAKET = "NewPackage") } traf ich das gleiche Problem. Aber wenn ich es auf diese Weise änderte: foo <- function() { .Call ("newpackage_foo", Paket = "newpackage") } Es funktioniert. – user2380245
Was passiert, wenn ich mehrere C++ - Dateien habe? – qed
Alle Variablen in R sind Vektoren. Listen Sie alle in 'cpp_files' auf. –