Tenía un plan para aprender R en el futuro cercano. Leyendo otra pregunta descubrí sobre Clojure. Ahora no sé qué hacer.
Creo que una gran ventaja de R para mí es que algunas personas en Economía lo usan, incluido uno de mis supervisores (aunque el otro dijo: ¡manténgase alejado de R!). Una ventaja de Clojure es que está basado en Lisp, y como he comenzado a aprender Emacs y estoy interesado en escribir mis propias personalizaciones, sería útil (sí, sé que Clojure y Elisp son diferentes dialectos de Lisp, pero son Lisp y por lo tanto similar me imagino).
No puedo preguntar cuál es mejor, porque sé que esto es muy personal, pero ¿alguien podría darme las ventajas (o ventajas) de Clojure x R, especialmente en términos prácticos? Por ejemplo, ¿cuál debería ser más fácil de aprender, cuál es más flexible o más potente, cuál tiene más bibliotecas, más soporte, más usuarios, etc.?
Mi uso previsto : la mayor parte de mi estimación debe hacerse con Matlab, por lo que no busco nada demasiado profundo en términos de análisis estadístico, sino un software para sustituir Excel por la manipulación y visualización de datos iniciales, estadísticas resumidas y gráficos, pero también algunos análisis estadísticos básicos o los intentos iniciales de mi estimación.
Respuestas:
Permítanme comenzar diciendo que me encantan los dos idiomas: tampoco puede equivocarse con ellos, y ciertamente son mejores que algo como C ++ o Java para hacer análisis de datos.
Para el análisis de datos básicos, sugeriría R (especialmente con plyr). En mi opinión, R es un poco más fácil de aprender que Clojure, aunque esto no es completamente obvio ya que Clojure se basa en Lisp y hay numerosos recursos fantásticos de Lisp disponibles (como SICP ). Hay menos palabras clave en Clojure, pero las bibliotecas son mucho más difíciles de instalar y trabajar. Además, tenga en cuenta que R (o S) se deriva en gran medida del Esquema, por lo que se beneficiaría del conocimiento de Lisp al usarlo.
En general:
La principal ventaja de R es la comunidad en CRAN (más de 2461 paquetes y contando). Nada se comparará con esto en el futuro cercano, ni siquiera una aplicación comercial como matlab.
Clojure tiene la gran ventaja de ejecutarse en la JVM, lo que significa que puede usar cualquier biblioteca basada en Java de inmediato.
Agregaría que di una charla sobre Clojure / Incanter con R hace un tiempo, por lo que puede resultarle interesante. En mi experiencia en la creación de esto, Clojure fue generalmente más lento que R para operaciones simples.
fuente
He sido un gran usuario de R durante los últimos 6-7 años. Como lenguaje, tiene varias limitaciones de diseño. Sin embargo, para trabajar en econometría y en análisis de datos, lo recomiendo de todo corazón. Tiene una gran cantidad de paquetes que serían relevantes para usted para la econometría, series de tiempo, modelos de elección del consumidor, etc. y, por supuesto, excelente visualización, buen álgebra y bibliotecas numéricas, etc. No me preocuparía demasiado por las limitaciones de tamaño de los datos. Aunque R no fue diseñado para "big data" (a diferencia, por ejemplo, SAS), hay formas de evitarlo. La disponibilidad de paquetes es lo que realmente marca la diferencia.
Solo he leído las especificaciones de lenguaje de Clojure, y es hermoso y limpio. Aborda de manera natural los problemas de paralelización y escala. Y si tiene algún conocimiento básico de Java u OOP, puede beneficiarse de la gran cantidad de bibliotecas Java de alta calidad.
El problema que tengo con Clojure es que es una operación reciente de un solo hombre (R.Hickey), por lo tanto 1) muy arriesgado 2) muy inmaduro 3) con adopción de nicho. Ideal para entusiastas, primeros usuarios, personas de CS / ML que desean probar cosas nuevas. Para un usuario que ve un idioma como un medio para un fin y que necesita un código muy sólido que se pueda compartir con otros, los idiomas establecidos parecen una opción más segura. Solo sé quien eres.
fuente
Actualización (agosto de 2014): como comenta @gappy a continuación, a partir de la versión 3.0.0 de R, los límites son más altos y significa que R es capaz de manejar conjuntos de datos más grandes.
Aquí hay un punto de datos: R tiene un "techo de datos grandes" , útil para saber si planea trabajar con grandes conjuntos de datos.
No estoy seguro de si las mismas limitaciones se aplican a Clojure / Incanter, si supera a R o es realmente peor. Me imagino que la JVM probablemente pueda manejar grandes conjuntos de datos, especialmente si logras aprovechar el poder de las características perezosas de Clojure.
fuente