usa sociales programación programacion porque para lenguajes lenguaje desventajas datos data contra ciencias ciencia big analisis python r rpy2 pyrserve pyper

sociales - Interfaz de Python para R Lenguaje de programación



python contra r (3)

Como señala @lgautier, ya hay otra respuesta sobre este tema . Dejo mi respuesta aquí ya que agrega la experiencia de acercarse a R como novato, conociendo a Python primero.

Uso tanto Python como R y simpatizo con su necesidad como recién llegado a R.

Como cualquier respuesta que reciba será subjetiva, resumo algunos puntos de mi experiencia:

  • Utilizo Rpy2 como mi interfaz y encuentro que es ''Pythonic'', estable, predecible y lo suficientemente efectivo para mis necesidades. No he usado los otros paquetes, así que no es un comentario sobre ellos, sino más bien sobre los méritos de rpy2.
  • PERO no espere que haya una manera fácil de usar R en Python sin aprender ambos. Encuentro que agregar una interfaz entre los dos idiomas permite una fácil codificación cuando se conocen ambos, pero una pesadilla de depuración para alguien que tiene deficiencia en uno de los idiomas.

Mi consejo:

  1. Para la mayoría de las aplicaciones, Python tiene paquetes que le permiten hacer la mayoría de las cosas que desea hacer en R, desde el análisis de datos hasta el trazado. Eche un vistazo a SciPy , NumPy , pandas , BioPython , matplotlib y otros paquetes científicos, o incluso las distribuciones completas de Anaconda o Enthought Python. Esto le permite mantenerse dentro del entorno de Python y le proporciona la mayor parte de la energía que necesita.
  2. Al mismo tiempo, querrá la amplia gama de paquetes especializados de R, así que dedique algo de tiempo a aprender en un entorno interactivo. Me resultó casi imposible dominar incluso la R básica en la línea de comandos, pero RStudio y los tutoriales de Quick-R y Learn-R me ayudaron mucho.

Una vez que conozcas ambos, harás magia con Rpy2 sin los horrores de la depuración de lenguaje cruzado.

Nuevos recursos

Actualización el 29 de enero de 2015

Esta respuesta ha resultado ser muy popular, así que pensé que sería útil señalar dos recursos más recientes:

El triplete R , Rserve y pyRserve permiten construir un puente de red de Python a R: ahora las funciones R se pueden llamar desde Python como si se implementaran en Python, e incluso los scripts R completos se pueden ejecutar a través de esta conexión.

  • Ahora es posible combinar R y Python usando rmagic en IPython/Jupyter facilitando enormemente el trabajo de producir investigaciones reproducibles y cuadernos que combinan ambos idiomas.

Esta pregunta ya tiene una respuesta aquí:

Soy bastante nuevo en R, y estoy muy acostumbrado a Python. No estoy tan cómodo escribiendo código R. Estoy buscando la interfaz de Python para R, que me permite usar paquetes R de forma pitónica .

Realicé búsquedas en Google y encontré algunos paquetes que pueden hacer eso:

Pero no estoy seguro de cuál es mejor? ¿Cuál tiene más contribuciones y se usa más activamente?

Tenga en cuenta que mi principal requisito es la forma pitónica para acceder a los paquetes R.


Mi experiencia personal ha sido con Rpy , no con Rpy2 . Lo usé por un tiempo, pero lo dejé caer a favor del uso de comandos del system . Un caso típico para mí fue ejecutar un modelo FORTRAN utilizando scripts de Python y postprocesar con R. En mi experiencia, la solución más fácil fue crear una herramienta de línea de comandos usando R, que es bastante sencillo (al menos en Linux). La herramienta de línea de comandos se podría ejecutar en la raíz del modelo ejecutado, y el script produciría un conjunto de objetos R y gráficos en un directorio de Routput . La ventaja de desconectar R y Python de esta manera era que podía depurar fácilmente el código R por separado del código de Python.

Creo que Rpy realmente brilla cuando se necesita mucha comunicación de ida y vuelta entre R y Python. Pero si la funcionalidad es muy separable, y la sobrecarga de disco I / O no es tan mala, me quedaré con las llamadas al system . Consulte el ?system para obtener más información sobre las llamadas al sistema, y Rscript para ejecutar las secuencias de comandos R como una herramienta de línea de comandos.

Con respecto a su deseo de escribir el código R en una forma de Python, esto no es posible ya que todas las soluciones requieren que escriba el código R en la sintaxis R. Para Rpy esto significa sintaxis R, pero un poco diferente (no, por ejemplo). Estoy de acuerdo con @gauden en que no hay atajos para usar R a través de Rpy .


Una pregunta sobre la comparación de rpy2, pyrserve y pyper entre sí fue respondida en el sitio más temprano.

En cuanto al número de contribuyentes, diría que los 3 tienen un número relativamente pequeño. Un sitio como Ohloh puede dar una respuesta más detallada.

Qué tan activamente se usa un paquete es difícil de determinar. Una indicación podría ser la cantidad de descargas, otra podría ser la cantidad de publicaciones en listas de correo o preguntas numéricas en un sitio como , el número de paquetes que lo usan o lo citan, el número de CV o vacantes que mencionan el paquete. Por mucho que crea que podría hacer una evaluación justa, también podría verse como un conflicto de intereses. ;-)

Los tres tienen sus pros y sus contras. Yo diría que basas tu elección en eso.