¿dónde está un buen tutorial sobre la creación de un paquete R con código fuente C++? [cerrado]


Estoy en una pérdida cuando empiezo a buscar en configurar scripts. No estoy seguro de cómo crear un paquete R que tenga varias funciones construidas desde C/C++ de tal manera que sea portátil entre Windows y Linux. Mis intentos de modificar las tripas de los paquetes existentes han sido infructuosos.

Cualquier ayuda o enlace sería muy apreciado.

Actualización: Si posible Me gustaría enlazar contra: Aumentar , CUDA , & hwloc

Sin embargo, me doy cuenta de que Boost será una pesadilla y hwloc no será mucho mejor. Así que me conformaría con CUDA. Esta fue la razón por la que me sumergí en el extremo profundo e intenté modificar algunos paquetes existentes para satisfacer mis necesidades (rgl & rglpk). Pero estoy dispuesto a empezar sin dependencias y construir desde cero. Gracias a todos por sus sugerencias!!

Author: M. Tibbits, 2011-03-02

2 answers

También estaba bastante perdido cuando escribí mi primer paquete con código compilado. Aquí hay algunos consejos, pero probablemente hay mejor material por ahí.

La pieza principal sobre escribir paquetes R es "Escribir extensiones R". Esta es una guía muy completa, pero que también hace que sea difícil de leer: http://cran.r-project.org/doc/manuals/R-exts.pdf

Aquí hay un pequeño tutorial que encontré en Google una vez que usé primero, que contiene cómo usar el código C: http://www.stat.columbia.edu / ~gelman / stuff_for_blog / AlanRPackageTutorial.pdf

Otra guía sobre paquetes R en general, pero no con código C: http://cran.r-project.org/doc/contrib/Leisch-CreatingPackages.pdf

Rcpp es un paquete muy útil para código C++, pero no lo he usado mucho todavía (3 días de hecho). Tiene mucha documentación en el propio paquete.

 22
Author: Sacha Epskamp,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-10-08 18:45:29

Mi enfoque predeterminado es aprender cómo otros han resuelto el problema. Hay más de 2800 paquetes CRAN, y muchos han estado allí durante más de una década. El problema es solucionable, y ha sido resuelto.

Ahora bien, también es cierto que la documentación está ahí, pero tal vez dispersa demasiado. Además, los objetivos cambian. Por ejemplo, hace años, todavía usamos src/Makefile, en estos días eso es muy recomendable contra debido a la necesidad de compilaciones multiarch (en OS X, en Windows, y un día también en Linux).

Así que tratar de mantenerlo simple ayuda. De hecho, puede tener un proyecto C++ válido ... sin nada. Simplemente suelte los archivos fuente en src/ de su paquete foo, y R sabrá cómo compilar libfoo.so o libfoo.dylib o ... dependiendo de la plataforma. Y si necesita otros archivos de encabezado, intente usar src/Makevars. Para dependencias externas se vuelve más complicado y uno lo que tiene que aprender autoconf et al, pero muchos paquetes skate por con algo simple.

Así que por favor amplíe su pregunta, muestra lo que está fallando y documenta lo que intentaste. Estoy seguro de que podemos ayudarte.

Edit: Y en caso de que desee hacer esto con el paquete Rcpp (que ayuda con la integración de R y C++), entonces hay una viñeta completa a punto de hacer esto en su propio paquete.

Edit 2: Ahora que expandió su pregunta, CUDA es una bestia completamente diferente. Eso es más difícil a medida que mezclas diferentes compiladores, etc. pp. Hay dos paquetes de ejemplo en CRAN, estudia eso.

 15
Author: Dirk Eddelbuettel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-03-02 21:30:47