Sé que esta es una vieja pregunta. Lo vi en mi feed, y después de leer todas las respuestas, sentí que tenía algo que agregar.
Primero, y ante todo, depende de lo que usted defina como “ciencia de datos”. Hay lugares que dudo que R pierda terreno, y es con aquellos que hacen “ciencia de datos” desde un punto de vista estrictamente de análisis estadístico, que, Si bien no se considera corriente como la definición, es al menos una gran parte de lo que hoy llamamos ciencia de datos. En mis tres títulos (BSc, MMath y PhD en estadística) R ha sido la herramienta elegida por profesores y estudiantes. Eso incluye a los estudiantes que pasaron a ser profesores. Me gusta engendra me gusta y todo eso.
De hecho, R fue mi favorito personal por un tiempo, y tenía una experiencia en programación mucho más amplia, así como cursos relevantes de CS que la mayoría de mis compañeros. Comparado con mis compañeros específicamente en el programa de doctorado mientras estuve allí, más que nada, por un amplio margen.
- ¿Cuál es el papel de un científico de datos en Quora?
- ¿Puede Kotlin reemplazar a Scala en ciencia de datos?
- ¿Cuál sería un buen lugar para un doctorado en ciencia de datos y ciencias del comportamiento?
- ¿Cuál es la diferencia entre datos métricos y datos no métricos?
- Un instituto de capacitación me dijo que no hay trabajo para principiantes en big data, ¿es cierto? Me aconsejan que vaya a un curso de ciencias de datos, ¿qué debo hacer?
Hay, por supuesto, algunos problemas con R que Python principalmente bordea o no tiene ni remotamente.
Primero, R no es, técnicamente, un lenguaje de programación: es un entorno equipado con un lenguaje de programación. Para ser justos, fue diseñado de esa manera, porque fue diseñado y escrito por estadísticos para estadísticos mucho antes de que se usara el término ciencia de datos. No digo que se tratara de estadísticos que eran programadores pobres, pero primero fueron estadísticos. Conocí a un par de miembros del equipo de desarrollo de R Core (Duncan Murdoch y yo tuvimos conversaciones ocasionales mientras estaba en Western, y aunque nunca tuve que enseñarme una clase o un TAed para él, seguí su trabajo), y mientras que tengo un gran respeto por todos ellos, nuevamente, el estadístico primero, el programador segundo.
Si no fuera por RStudio y Hadley Wickham, la R “regular” no estaría donde está ahora. Y si no fuera por Revolution Analytics (ahora Microsoft R), aún se vería obligado a lidiar con R como un cerdo de memoria. La cuestión es que esto no es realmente culpa de nadie: cuando se desarrolló R, no se consideraron conjuntos de datos reales ni siquiera cerca del tamaño que tenemos ahora. Dudo que alguien haya concebido que tal situación fuera posible. Y la administración de memoria es realmente, muy, difícil de cambiar en un sistema como R sin romper muchas cosas, razón por la cual Revolution (y ahora presumiblemente Microsoft) podría cobrar una moneda por su producto.
Python, por otro lado, no estaba originalmente destinado a la ciencia de datos. Es muy bueno en ciertas cosas específicas. Es el lenguaje de pegamento definitivo, y sus expresiones idiomáticas son suficientes como las de R y me sentí cómodo cambiando. Agregar una integración de C más fácil que la de R y Cython (y eventualmente Numba … oh my) hacen que sea increíblemente rápido para algoritmos personalizados. Y, para que no lo olvidemos, Numpy, Scipy y scikit aprenden para todo lo que no sea personalizado (aunque puede hacer muchos algoritmos personalizados de ciencia de datos ajustando y / o ampliando cosas).
Realmente no conozco la historia de Python tan bien como la historia de R, por lo que no sé qué decisiones tomaron todo el código (principalmente escrito en C) que hizo que ocurriera toda esta magia de la ciencia de datos. Fue allí cuando comencé con Python, y de nuevo, las similitudes con R me hicieron cambiar cómodamente. (Tenga en cuenta que había estado programando en varios otros idiomas durante mucho tiempo antes). Pero la similitud tenía sentido en términos de análisis.
R tiene una gran cantidad de paquetes. Más de lo que espero que tenga Python, porque hay repetición, mala calidad y una sintaxis muy diferente en muchos de ellos. Si no fuera por Hadley, RStudio y muchos años de uso de R, no estaría usando R en todos estos días. Tal como está, lo uso para cosas personalizadas que necesito explotar si sé que hay algo en lo que R tiene un paquete en el que confío.
Realmente no hay necesidad de elegir uno sobre el otro si puede usar ambos. Especialmente porque puedes llamar a R desde Python (pero diablos, puedes llamar a prácticamente cualquier otro idioma desde Python). Si recién comenzara ahora, y tuviera que elegir uno … aún sería difícil. Sobre todo porque ya tengo una historia tan larga con R. Pero probablemente elegiría Python … eventualmente. Pero, ¿por qué elegir si no es necesario?