2011-10-28 21 views
9

Sé que existe un módulo (rpy y rpy2) para convertir el código R en Python.Convertir Python a R

¿Hay alguna manera fácil de hacerlo al revés?

+1

El paquete rJython en CRAN y el paquete rPython en R-Forge permiten llamar a un código Jython y un código Python desde R. El paquete rSymPy en CRAN usa rJython (y, de hecho, rJython era parte de rSymPy y desde entonces factorizado en su propio paquete). –

Respuesta

13

rpy (2) no convierte el código. Solo le permite una interfaz para comunicarse con R desde python y emitir comandos R desde dentro de python.

Dado que R es muy dependiente de las bibliotecas de estadísticas que no están disponibles en python, la conversión generalmente sería una gran cantidad de trabajo. Para convertir una sola línea como

lmer (y ~ x1 + x1 + (1|id), mydat) 

algo en python tomaría una gran cantidad de trabajo. Si solo quieres ejecutar ese código desde Python utiliza rpy. Yendo para otro lado, que parece ser más de lo que te interesa, la conversión a menudo podría ser un poco más directa. Sin embargo, el código tiende a estar muy poco optimizado para R y funciona muy mal. Hace poco optimicé un código R convertido de python por alguien que escribió el código R como una traducción más o menos directa línea por línea. La optimización salió 1/3 de la longitud y entre 20 y 1000 veces más rápido (dependiendo de la función).

+0

¿Qué hace el código R 'lmer (y ~ x1 + x1 + (1 | id), mydat)' hacer? Me pregunto si este no es el tipo de tarea en la que NumPy/SciPy sería bueno. – EOL

+1

Un vistazo rápido a los manuales de NumPy/SciPy sugiere que su soporte de estadísticas es bastante básico ... 'lmer' (en el paquete' lme4' es para ajustar modelos mixtos lineales, que es un problema computacional no trivial ...) –

4

John es correcto. No se están convirtiendo entre idiomas, sino idiomas de interfaz. La conversión del lenguaje no es particularmente común, aunque interconectarlos es. Sin embargo, objeto conversión es bastante común, ya que es una parte importante de la interfaz de idiomas.

Además de Rpy y Rpy2, eche un vistazo a RSPython. También proporciona la conversión de objeto e inspirada Rpy.

4

Si tener Python como punto de partida es aceptable, rpy2 le permite ir en ambos sentidos entre R y Python: puede llamar al código Python mientras ejecuta el código R (doc. here).

1

con Pyper puede ir en ambos sentidos muy fácilmente: a partir de R a partir de Python y Python a R. http://www.webarray.org/softwares/PypeR/

funciona muy bien y este artículo describe cómo funciona y las ventajas sobre las alternativas (RPY, rpy2 etc.)

http://www.jstatsoft.org/v35/c02/paper

I personalmente utilizado para ejecutar modelos de estadísticas en R de pitón, y para importar tramas de datos/exportación de una forma a la otra (y convertir marcos numpy en r-tramas de datos y viceversa).