Dies ist meine erste stackoverflow Frage, also bitte sei nett, Leute!Problem beim Erstellen von R-Paket mit Devtools, wenn es RcppArmadillo verwendet
Ich habe meine kürzlich gefundene Macht, R-Pakete mit Devtools zu bauen, sehr genossen. Sobald ich jedoch versuche, ein Paket zu erstellen, das RcppArmadillo verwendet, funktioniert mein Workflow zum Ausführen von devtools :: document(), devtools :: check() und devtools :: build() nicht mehr.
Zum Beispiel habe ich eine (hoffentlich ziemlich minimale + komplette) Testversion des Pakets, das ich hier entwickeln möchte: https://github.com/suztolwinskiward/fooR/. fooR enthält nur eine Funktion, die eine C++ - Implementierung der Funktion rdist.earth aus dem fields-Paket ist.
Lauf devtools :: Dokument („FOOR“) spuckt viele Nachrichten (mehrere Anspielung auf „undefinierte Referenzen“ zu Variablen, die in meinem Source-co Leben nicht, dass mir nicht interpretierbar sind, und dann scheitert:
collect2: ld returned 1 exit status
no DLL was created
ERROR: compilation failed for package 'fooR'
* removing 'C:/Users/I53794/AppData/Local/Temp/RtmpWgC8nD/devtools_install_1ea473123086/fooR'
Error: Command failed (1)
Einer der anderen Seite, wenn ich die C++ Funktion, die auf RcppArmadillo hängt beziehen, so scheint es ganz gut zu laufen:
mich> Rcpp::sourceCpp('./src/rdist_earth_cpp.cpp')
> data('miami')
> data('new_orleans','katrina_path')
> rdist_earth_cpp(katrina_path,new_orleans)
[,1]
[1,] 1042.36073
[2,] 998.96793
[3,] 957.69315
[4,] 917.91486
[5,] 868.07791
[6,] 805.73485
[7,] 763.01476
[8,] 726.10133
[9,] 692.14482
[10,] 670.15133
[11,] 662.23353
[12,] 625.55592
[13,] 601.08682
[14,] 579.73940
[15,] 560.32660
[16,] 539.14192
[17,] 510.15438
[18,] 481.40037
[19,] 442.52322
[20,] 391.96619
[21,] 331.66378
[22,] 271.79088
[23,] 201.24749
[24,] 128.12647
[25,] 56.99198
[26,] 45.80297
[27,] 32.96609
[28,] 81.71237
[29,] 189.31050
[30,] 296.92104
[31,] 406.12593
[32,] 516.08458
[33,] 654.81113
[34,] 808.21670
Dies führt etwas falsch mit der Art, wie ich bin versucht zu denken, es gibt RcppArmadillo in meinem Paket zu verwenden, aber ich konnte nicht fig Was? Jeder Rat sehr geschätzt!
P.S. Ich bin überrascht, dass es hier kein RcppArmadillo-Tag gibt ....
... und es wäre für Sie erstellt, wenn Sie Werkzeuge wie 'RcppArmadillo.package.skeleton()' verwendet haben, die wir ** genau ** erstellt haben, um Neulingen bei der Paketerstellung zu helfen. –
Dank Ihnen beiden. Ich werde definitiv RcppArmadillo.packge.skeleton() lernen - danke für die Entwicklung Dirk et al. Normalerweise erstellt devtools :: document() den Namespace für mich, also weiß ich nicht, warum diese Möglichkeit nicht funktioniert, sobald ich RcppArmadillo einschließe. –