2011-02-17 10 views
6

A menudo uso Sweave para producir documentos LaTeX donde ciertos fragmentos se producen dinámicamente mediante la ejecución del código R. Esto funciona bien, pero también es posible tener fragmentos de código que se ejecutan de diferentes maneras, p. ejecutando el código en el shell, o ejecutando Perl, y así sucesivamente? Sería útil poder mezclar las cosas, así podría hacer cosas como ejecutar comandos de shell para buscar algunos datos, ejecutar algunos comandos de Perl para procesarlos previamente y luego ejecutar comandos de R para analizarlos.SWeave con fragmentos de código no R?

Por supuesto que podría usar todas las R y usar system() como sustituto de un hombre pobre, pero eso no hace que la lectura sea muy agradable en el documento.

Respuesta

4

no está directamente relacionada con Sweave, pero org-babel, que es parte de Emacs org -mode, permite mezclar fragmentos de código de diferentes idiomas en un archivo, pasar datos de un fragmento a otro, ejecutar ellos, y generar LaTeX o HTML exportar desde la salida.

usted puede encontrar más información sobre el modo Org aquí:

http://www.orgmode.org/

Y para ver cómo funciona org-babel:

http://orgmode.org/worg/org-contrib/babel/

+0

....fuiste más rápido que yo :-) –

+0

@Bernd uy, perdón :-) – juba

+0

Ken, definitivamente querrás consultar org-mode para esto, es compatible con algo así como 30 idiomas, y es bueno para mucho más que simplemente código de incrustación (aunque también es bueno en eso). La próxima semana, finalmente voy a publicar mi extensión en el uso de org-mode con R en mi sitio, le avisaré cuando eso termine. –

3

ciertamente no hay fácil manera de hacer esto que no sea a través de cualquiera de las interfaces de idiomas extranjeros de R (tal vez a través inline si está soportada), o system(). Por lo que vale, simplemente usaría system(); eso debería ser lo suficientemente fácil.

Puede ver this previous question about having a Sweave equivalent for Python, donde uno de los encuestados realmente crea una interfaz separada. Esto puede darle una idea de lo que se necesitaría para incrustar otros idiomas que pueden no ser compatibles. Como mínimo, debe realizar importantes operaciones de piratería en el controlador Sweave.

2

Existe el proyecto StatWeave que usa Java en lugar de R para hacer el tejido, pero ejecutará varios programas en lugar de solo R. No sé qué tan difícil sería hacer que Perl u otros programas como eso, sino que la página indica que ya funciona con R, SAS, Stata, y otros:

http://www.cs.uiowa.edu/~rlenth/StatWeave/

3

¿Sabe emacs" org-mode y, más específicamente, Babel? Si ya conoce Emacs o está dispuesto a cambiar a Emacs, entonces org-mode y Babel son la respuesta a su pregunta.

Por ejemplo, actualmente estoy trabajando en un documento que contiene algunos guiones de shell, realiza cálculos con R y crea diagramas de flujo con punto (graphviz). Org-mode puede exportar una variedad de formatos, p. LaTeX (eso es lo que uso).

+0

Genial. Ya soy un usuario de emacs (Aquamacs en realidad), así que es una buena opción. ¡Es extraño que un formato de formato múltiple esté oculto en lo que parece ser un modo de administración de tareas! –

5

La nueva cosa (para documentos multilingües, multiformato) puede ser dexy.it que, por ejemplo, estos guys at opengamma.org usan como el servidor.

Ana, quien está detrás de dexy, también está dando muchas charlas sobre eso, así que también mira el dexy blog.

+0

Es bueno saberlo, lo comprobaré. –

Cuestiones relacionadas