Dois-je importer RccpEigen dans le fichier DESCRIPTION pour un paquet R l’utilisant, ou «LinkingTo» suffit-il?

J’ai utilisé RcppEigen.package.skeleton () comme modèle pour append une petite fonction à un package R existant, de sorte que mon fichier DESCRIPTION comporte désormais les lignes:

Imports: Rcpp (>= 0.11.3), RcppEigen (>= 0.3.2.3.0) LinkingTo: Rcpp, RcppEigen 

Cependant, effectuer la R CMD check --as-cran .tar.gz donne les éléments suivants:

“Package dans Depends / Imports qui devrait probablement être uniquement dans LinkingTo: ‘RcppEigen'”

La page Writing R Extensions indique: “La spécification d’un package dans” LinkingTo “suffit si ce sont des en-têtes C ++ contenant du code source ou si des liaisons statiques sont effectuées à l’installation: les packages n’ont pas besoin de figurer (et ne doivent généralement pas être) dans la liste” Cela dépend des champs “Importations” ou “Importations”. Cela inclut les packages CRAN BH et presque tous les utilisateurs de RcppArmadillo et RcppEigen. ”

Je ne connais aucun C ++, donc je ne sais pas ce que cela signifie. Ma procédure pour créer le paquet est la suivante: RcppEigen – passage d’une fonction en ligne à une fonction .cpp dans un paquet et “Map”

Peut-on supprimer RcppEigen de “Imports” et pourquoi / pourquoi pas? (c.-à-d. pouvez-vous s’il vous plaît expliquer ce que dit la page Writing R Extension, pour que je puisse comprendre ce que je fais? Les experts en R et en logiciels de mon laboratoire ont dit qu’ils ne comprenaient pas la différence entre “Imports “et” LinkingTo “.)

Brièvement:

  1. Il y a actuellement 25 paquets sur CRAN qui utilisent RcppEigen. Cela fait 25 études de cas. Vous pouvez en regarder un ou deux.
  2. LinkingTo: est généralement suffisant.
  3. Il se peut que le générateur de squelettes ajoute toujours Imports. Nous ne faisons plus cela à RcppArmadillo.

Quand je viens d’exécuter la fonction correspondante pour RcppArmadillo, j’ai eu

 Imports: Rcpp (>= 0.11.3) LinkingTo: Rcpp, RcppArmadillo 

alors je me penche vers un insecte. Et j’ai maintenant ouvert un ticket d’émission pour cela.

Plus généralement, les différences entre LinkingTo: et Imports: sont

  • Importations: est l’alternative moderne et préférée à Depends; vous devez également utiliser NAMESPACE
  • LinkingTo: est principalement utilisé pour pointer vers les fichiers d’en-tête comme nous le faisons ici.

So Writing R Extensions, ou le livre en ligne de Hadley pour plus de détails.