Question

Je veux examiner le RCPP pour améliorer la vitesse de certains de mon code R sans avoir à recourir au code C ++ désordonné (j'ai eu un certain succès avec cela, mais cela ressemble à du code de l'enfer).

J'ai donc vérifié la documentation fournie avec le RCPP, ainsi que le paquet de documents fournis à Site de Dirk Eddelbuettel. J'ai installé et regardé RCPPPExamples, mais (au moins à partir de sa documentation), la plupart d'entre eux se réfèrent à RCPPClassic ?. En plus de cela, j'ai fait un peu de recherche sur Google, mais cela n'a pas abouti à des réponses à ce qui semble être des questions de base.

  • Les index dans le RCPP travaillent zéro ou un seul
  • La liste fournit les deux operator() etoperator[], mais apparemment pasoperator[[]]. On ne sait pas lequel sont similaires à [] et [[]] dans R.
  • Y a-t-il un soutien aux facteurs dans le RCPP (il ne semble pas y en avoir)?

Remarque: En fait, j'ai trouvé quelques réponses du premier exemple dans rcpp-introduction.pdf, mais cela ressemblait à de la chance.

Aussi mon stl est très rouillé, donc si quelqu'un peut me fournir un exemple simple où est chaque élément d'une liste (par exemple) print-ed avec une boucle de style STL, ce serait bien.

Si quelqu'un veut m'appeler un idiot pour ne pas avoir trouvé ces informations: allez-y et faites votre journée. Ensuite, faites le mien et indiquez-moi les documents dont j'ai besoin :-)

En tant que suggestions à M. Eddelbuettel et à d'autres auteurs du RCPP (je m'attends à ce que certains d'entre eux lisent ceci): Les hiérarchies de classe et autres, fournies par Doxygen, sont vraiment soignées lorsque vous êtes déjà engendré dans le RCPP, mais pour un débutant (dans RCPP), je suis plus intéressé par une liste de «cette méthode dans cette classe fait cela comme cette fonction dans R» plutôt que «vous pouvez trouver la déclaration de cet opérateur dans ce fichier d'en-tête». Après tout, je comprends que l'un des objectifs du RCPP est de réduire le seuil pour l'utilisation de C ++ dans R? Remarque: D'après ce que j'ai vu et compris, j'apprécie fortement le code réel de RCPP et j'ai le plus grand respect pour ses créateurs. Si le manque de documentation de base est simplement le résultat du «manque de ressources», je serais prêt à devenir une ressource (par exemple: travailler sur la documentation «de base» une fois que je l'ai traversé moi-même).

Était-ce utile?

La solution

Je ne sais pas trop par où commencer à répondre à cela, mais voici une tentative rapide:

  • Le package a un site Web. Le site Web répertorie la documentation.

  • Le package a huit (8) vignettes. Ils sont clairement répertoriés. Ils sont principalement destinés à être lus comme documentation, un peu plus d'introduction et d'autres plus avancés. Certains (comme la sortie des tests unitaires) sont plus un iniateur de contrôle de la qualité.

  • Il y a une vignette appelée RCPP-introduction. Nous y faisons référence à plusieurs reprises. Nous vous suggérons de le lire. C'est maintenant aussi un Document évalué par des pairs et publié ce qui peut lui donner encore plus de crédibilité.

  • Il y a une vignette appelée RCPP-FAQ. C'est première question Est-ce que "comment puis-je commencer?" qui pointe vers l'introduction RCPP susmentionnée.

  • Il y a une liste de diffusion dédiée au projet, vous pouvez réellement lire les archives.

  • Nous avons donné de nombreux conférences, des diapositives sont disponibles, tout comme un enregistrement de 90 minutes d'un discours Google Tech.

  • Même Stackoverflow a une balise pour cela: [rcpp]. Vous pouvez lire les articles précédents.

  • Il y a plus de deux douzaines de packages clairement répertoriés sur la page CRAN pour RCPP comme l'utilisant. Vous pouvez lire leur code source.

Cela dit, RCPP ne peut pas être utilisé à la place de C ++ Donc, si vous ne savez pas ou ne comprenez pas cela operator[[]] ne peut pas exister en C ++, nous ne pouvons pas vous aider non plus. Ce n'est pas un compilateur de code Magic Fairy ou R-to-C ++. Au contraire, son objectif est de rendre beaucoup plus facile d'atteindre le code C ++ de R, et dans certains cas, parvient même à améliorer la pratique C ++. Essentiellement, il essaie d'être "super-additif": la combinaison R et C ++ devrait être plus que l'un ou l'autre isolement.

Enfin, je vous accorde que les packages RCPPExamples - qui couvrent en passant l'ancienne et la nouvelle API - pourraient utiliser plus d'exemples. Cependant, ses Sourecs donnent de bons conseils de portage de l'ancien ("classique") à l'API nouvelle et actuelle.

Mais il n'y a que beaucoup de documentation que nous pouvons écrire nous-mêmes. Je trouve moi-même les puces ci-dessus assez exhaustives. Vous avez peut-être perfectionné la partie l'élément la plus faible de la chaîne. C'est de la malchance. Veuillez essayer certains des autres conseils répertoriés ici.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top