2012-08-23 11 views
5

que he escrito algo de código R para una disertación, apoyándose en algunos paquetes externos (por ejemplo, plyr y reshape) y escribir un par relativamente simples funciones en línea usando C++ y inlineRcppArmadillo.¿Cómo me aseguro de que el código R/Rcpp sea reproducible ("distributable")?

Me gustaría asegurar que se pueda realizar "tal cual" en computadoras que no sean las mías (Win64), con fines de reproducibilidad de la investigación.

Mi pregunta: supongamos que incluyan código para la instalación de los paquetes necesarios, serían los RcppArmadillo (y Rcpp y inline) paquetes de ser suficiente para poder compilar las funciones escritas en RcppArmadillo, o necesitarían al usuario final para cambiar las rutas del sistema para la compilación en su máquina de Windows? Si no, ¿es posible/recomendable guardar las funciones compiladas de mi lado e incluidas en el código R que envío?

Además, en el caso improbable de que el código se ejecute algún tiempo después (por ejemplo, un par de años), es suficiente incluir una instalación R completa con los paquetes relevantes en su versión actual para hacer el código " prueba del futuro"?

Espero que la pregunta sea clara.

Respuesta

9

Creo que quiere decir que su código es "distribuible" y "ejecutable por otra persona", que es un requisito más flexible. Ser "reproducible" implica que la pregunta anterior es cierta, y agrega la restricción de que los resultados son idénticos (hasta un épsilon de su elección).

Y la respuesta habitual para "cómo puedo permitir que otros ejecuten mi código R" es crear un paquete.

Para el código relacionado con Rcpp, tenemos toda una viñeta dedicada a construir su propio paquete con su bacalao que usa Rcpp. La viñeta se llama 'paquete Rcpp'.

+0

Gracias, no estaba al tanto de la distinción entre "reproducible" y "distribuible". Como probablemente hayas adivinado, quise decir lo último. Casi esperaba que la respuesta fuera "crear un paquete", lo que a mí me parece un poco más digno de mi código, pero si esa es la solución más fácil y documentada, lo haré. – MatteoS

+0

Por cierto, gracias por 'Rcpp' y' RcppArmadillo' – MatteoS

+0

He votado a favor de la distinción sobre "reproducible" y "distribuible". Yo tampoco lo sabía. –

Cuestiones relacionadas