Опция NAMESPACE, созданная RcppArmadillo.package.skeleton, вызывает ошибку - PullRequest
0 голосов
/ 06 декабря 2018

Я создаю пакет R, который содержит функции Rcpp в зависимости от RcppArmadillo, поэтому сначала я создаю скелет пакета с помощью RcppArmadillo.package.skeleton.Однако, когда я roxygenize мой пакет, он выдает ошибку, показанную ниже.

R код

library(roxygen2)
library(RcppArmadillo)
library(Rcpp)
RcppArmadillo.package.skeleton(name = "prac_181206", example_code = FALSE)
roxygenize(package.dir =  "prac_181206", roclets = "rd")

Ошибка

Error in getDLLRegisteredRoutines.DLLInfo(dll, addNames = FALSE) : 
  must specify DLL via a “DLLInfo” object. See getLoadedDLLs()

Потратив некоторое время, я понял, что это можно решить, удалив опцию .registration в файле NAMESPACE, представленном следующим образом.

Оригинальный файл NAMESPACE

useDynLib(prac_181206, .registration=TRUE)
importFrom(Rcpp, evalCpp)
exportPattern("^[[:alpha:]]+")

Короче говоря, после изменения первой строки выше на useDynLib(prac_181206) все работает нормально, но я не понимаю, что означает ошибка и почему мое решение работает.

Не могли бы выкто-нибудь помочь мне с этим вопросом?Я ценю это!

Поскольку это игрушечный пример, который, мы надеемся, воспроизводим, я не включил никакие другие функции в папки man или src, созданные RcppArmadillo.package.skeleton и выше.

К вашему сведению, соответствующая информация о моей платформе:

  • Windows 7 x64
  • R-3.5.1, Rstudio-1.1.423
  • Rcpp-0.12.19,RcppArmadillo-0.9.100.5.0
  • roxygen2-6.1.1

1 Ответ

0 голосов
/ 06 декабря 2018

То есть, насколько я могу судить, билет на выпуск roxygen2 # 771 , который я подал 3 августа и который до сих пор не решен.Несмотря на то, что команда roxygen2 закрыла его.Не стесняйтесь, чтобы продолжить там.

Если использовать roxygen2 6.0.1 , это работает:

edd@rob:/tmp$ r -lRcppArmadillo -e'RcppArmadillo.package.skeleton(name = "prac_181206", example_code = FALSE)'

Calling kitten to create basic package.
Creating directories ...
Creating DESCRIPTION ...
Creating NAMESPACE ...
Creating Read-and-delete-me ...
Saving functions and data ...
Making help files ...
Done.
Further steps are described in './prac_181206/Read-and-delete-me'.

Adding pkgKitten overrides.
Deleted 'Read-and-delete-me'.
Done.

Consider reading the documentation for all the packaging details.
A good start is the 'Writing R Extensions' manual.

And run 'R CMD check'. Run it frequently. And think of those kittens.


Adding RcppArmadillo settings
 >> added Imports: Rcpp
 >> added LinkingTo: Rcpp, RcppArmadillo
 >> added useDynLib and importFrom directives to NAMESPACE
 >> added Makevars file with Rcpp settings
 >> added Makevars.win file with RcppArmadillo settings
edd@rob:/tmp$ cd prac_181206/
edd@rob:/tmp/prac_181206$ roxy.r 
** Using cached version 6.0.1 of roxygen2.
First time using roxygen2. Upgrading automatically...
Updating roxygen version in /tmp/prac_181206/DESCRIPTION
Loading required package: Rcpp
edd@rob:/tmp/prac_181206$ 

, где roxy.r это эта простая оболочка , что трудно-провода roxygen2 6.0.1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...