Ich habe die folgende Datei cumsum_bounded.cppC++ Funktion nicht verfügbar
#include <Rcpp.h>
using namespace Rcpp;
//' Cumulative sum.
//' @param x numeric vector
//' @param low lower bound
//' @param high upper bound
//' @param res bounded numeric vector
//' @export
//' @return bounded numeric vector
// [[Rcpp::export]]
NumericVector cumsum_bounded(NumericVector x, double low, double high) {
NumericVector res(x.size());
double acc = 0;
for (int i=0; i < x.size(); ++i) {
acc += x[i];
if (acc < low) acc = low;
else if (acc > high) acc = high;
res[i] = acc;
}
return res;
}
ich dann & Reload bauen und meine neue Funktion testen.
cumsum_bounded(c(1, -2, 3), low = 2, high = 10)
[1] 1 0 3
Dann baue ich die Dokumentation. devtools::document()
Wenn ich alles kompiliert.
Aber wenn ich cumsum_bounded(c(1, 2, 3), low= 2, high = 10)
laufen bekomme ich den Fehler:
Error in .Call("joshr_cumsum_bounded", PACKAGE = "joshr", x, low, high) :
"joshr_cumsum_bounded" not available for .Call() for package "joshr"
Namespace
# Generated by roxygen2: do not edit by hand
export(cumsum_bounded)
Update:
Wenn ich ein neues Projekt erstellen, wie oben und verwenden Sie nicht die Build & Reload
funktionieren aber eher devtools :: loadall(), es wird funktionieren. Aber sobald ich diese Taste drücke, geht es seitwärts.
Welche Dateien wurden aktualisiert, als Sie 'document()' ausgeführt haben? – nrussell
Sie können ein Tag 'Devtools' hinzufügen - wie' Rcpp' selbst funktioniert wie dokumentiert. Und wir sagen nichts (gut oder schlecht) über 'Devtools'. Ich würde einfach ausführen 'Rcpp :: compileAttributes()' das [das sehr feine Handbuch] (https://cloud.r-project.org/web/packages/Rcpp/vignettes/Rcpp-attributes.pdf) sagt. –
@DirkEddelbuettel Die Schaltfläche 'Build & Reload' führt' Rcpp :: compileAttributes() 'aus. – jwenzeslaus