У меня был план изучения Р в ближайшее время. Читая другой вопрос, я узнал о Clojure. Теперь я не знаю, что делать.
Я думаю, что большим преимуществом R для меня является то, что некоторые люди в экономике используют его, в том числе один из моих руководителей (хотя другой сказал: держись подальше от R!). Одним из преимуществ Clojure является то, что он основан на Лиспе, и, поскольку я начал изучать Emacs, и мне очень нравится писать собственные настройки, это было бы полезно (да, я знаю, что Clojure и Elisp - это разные диалекты Лисп, но они и Лисп и тем самым похожий я себе представляю).
Я не могу спросить, какой из них лучше, потому что я знаю, что это очень личное, но может ли кто-нибудь дать мне преимущества (или преимущества) Clojure x R, особенно в практическом плане? Например, какой из них должно быть легче выучить, какой из них более гибкий или более мощный, у кого больше библиотек, больше поддержки, больше пользователей и т. Д.?
Мое предполагаемое использование : основная часть моей оценки должна быть сделана с использованием Matlab, поэтому я не ищу ничего слишком глубокого с точки зрения статистического анализа, а скорее программного обеспечения для замены Excel для первоначальной обработки данных и визуализации, сводной статистики и построения диаграмм, но также некоторый базовый статистический анализ или первоначальные попытки моей оценки.
Ответы:
Позвольте мне начать с того, что я люблю оба языка: вы не ошибетесь ни с одним из них, и они, безусловно, лучше, чем что-то вроде C ++ или Java, для анализа данных.
Для анализа основных данных я бы предложил R (особенно с plyr). IMO, R немного легче выучить, чем Clojure, хотя это не совсем очевидно, поскольку Clojure основан на Lisp и существует множество фантастических доступных ресурсов Lisp (таких как SICP ). В Clojure меньше ключевых слов, но библиотеки гораздо сложнее установить и работать с ними. Кроме того, имейте в виду, что R (или S) в значительной степени является производным от Scheme, поэтому вы могли бы извлечь пользу из знаний Lisp при его использовании.
В целом:
Основным преимуществом R является сообщество на CRAN (более 2461 пакетов и подсчет). Ничто не сравнится с этим в ближайшем будущем, даже такое коммерческое приложение, как matlab.
Clojure имеет большое преимущество работы на JVM, что означает, что он может немедленно использовать любую библиотеку на основе Java.
Я хотел бы добавить, что я выступил с докладом, касающимся Clojure / Incanter для R некоторое время назад , так что вы можете найти его интересным. По моему опыту создания Clojure, как правило, медленнее, чем R для простых операций.
источник
Я был тяжелым пользователем R в течение последних 6-7 лет. Как язык, он имеет несколько ограничений дизайна. Тем не менее, для работы в эконометрике и анализе данных, я все еще искренне рекомендую это. Он имеет большое количество пакетов, которые могут быть полезны вам для эконометрики, временных рядов, моделирования потребительского выбора и т. Д. И, конечно, отличной визуализации, хорошей алгебры и числовых библиотек и т. Д. Я бы не слишком беспокоился об ограничениях размера данных. Хотя R не был разработан для «больших данных» (в отличие, скажем, от SAS), есть способы обойти это. Доступность пакетов - это то, что действительно имеет значение.
Я только прочитал языковые спецификации Clojure, и это красиво и чисто. Он естественным образом решает вопросы распараллеливания и масштабирования. И если у вас есть базовые знания Java или ООП, вы можете воспользоваться большим количеством высококачественных библиотек Java.
Проблема, которую я имею с Clojure, заключается в том, что это недавняя операция с одним человеком (R.Hickey), поэтому 1) очень рискованная 2) очень незрелая 3) с принятием ниши. Отлично подходит для энтузиастов, начинающих, CS / ML людей, которые хотят попробовать что-то новое. Для пользователя, который рассматривает язык как средство достижения цели и которому нужен очень надежный код, который можно использовать совместно с другими, признанные языки кажутся более безопасным выбором. Просто знай, кто ты.
источник
Обновление (август 2014 г.): как @gappy комментирует ниже, начиная с версии R 3.0.0 ограничения выше и означают, что R способен обрабатывать большие наборы данных.
Вот точка данных: R имеет «потолок больших данных» , полезно знать, планируете ли вы работать с огромными наборами данных.
Я не уверен, применяются ли такие же ограничения к Clojure / Incanter, превосходит ли он R или на самом деле хуже. Я полагаю, что JVM может обрабатывать большие наборы данных, особенно если вам удастся использовать возможности ленивых функций Clojure.
источник