Miałem plan nauki R w najbliższej przyszłości. Czytając kolejne pytanie , dowiedziałem się o Clojure. Teraz nie wiem co robić.
Myślę, że dużą zaletą R dla mnie jest to, że niektórzy ludzie w ekonomii go używają, w tym jeden z moich przełożonych (chociaż drugi powiedział: trzymaj się z dala od R!). Jedną z zalet Clojure jest to, że jest oparty na Lisp, a ponieważ zacząłem uczyć się Emacsa i chętnie piszę własne dostosowania, byłoby to pomocne (tak, wiem, że Clojure i Elisp są różnymi dialektami Lisp, ale są wyobrażam sobie zarówno Lisp, jak i tym podobne).
Nie mogę zapytać, który z nich jest lepszy, ponieważ wiem, że jest to bardzo osobiste, ale czy ktoś mógłby dać mi zalety (lub zalety) Clojure x R, szczególnie pod względem praktycznym? Na przykład, który z nich powinien być łatwiejszy do nauczenia się, który jest bardziej elastyczny lub bardziej wydajny, który ma więcej bibliotek, więcej wsparcia, więcej użytkowników itp.?
Moje zamierzone zastosowanie : większość moich szacunków powinna być wykonana przy użyciu Matlaba, więc nie szukam niczego zbyt głębokiego pod względem analizy statystycznej, ale raczej oprogramowania, które zastąpiłoby Excela w zakresie wstępnej manipulacji i wizualizacji danych, statystyk podsumowujących i wykresów, ale także podstawowa analiza statystyczna lub wstępne próby mojego oszacowania.
Odpowiedzi:
Zacznę od stwierdzenia, że uwielbiam oba języki: nie można się pomylić z żadnym z nich, a na pewno są one lepsze niż C ++ lub Java do analizy danych.
Dla podstawowej analizy danych sugerowałbym R (szczególnie z plyr). IMO, R jest trochę łatwiejszy do nauczenia niż Clojure, chociaż nie jest to całkowicie oczywiste, ponieważ Clojure opiera się na Lisp i dostępnych jest wiele fantastycznych zasobów Lisp (takich jak SICP ). W Clojure jest mniej słów kluczowych, ale biblioteki są znacznie trudniejsze do zainstalowania i pracy z nimi. Pamiętaj również, że R (lub S) w dużej mierze pochodzi ze Schematu, więc skorzystaj z wiedzy Lisp podczas jej używania.
Ogólnie:
Główną zaletą R jest społeczność na CRAN (ponad 2461 pakietów i wciąż rośnie). W niedalekiej przyszłości nic się z tym nie porówna, nawet komercyjna aplikacja taka jak Matlab.
Clojure ma tę wielką zaletę, że działa na JVM, co oznacza, że może natychmiast korzystać z dowolnej biblioteki opartej na Javie.
Dodałbym, że jakiś czas temu rozmawiałem z R Clojure / Incanter , więc może zainteresuje Cię to. Z mojego doświadczenia związanego z tworzeniem tego, Clojure był ogólnie wolniejszy niż R dla prostych operacji.
źródło
Byłem intensywnym użytkownikiem R przez ostatnie 6-7 lat. Jako język ma kilka ograniczeń projektowych. Jednak do pracy w ekonometrii i analizie danych nadal z całego serca ją polecam. Ma dużą liczbę pakietów, które byłyby dla ciebie odpowiednie dla ekonometrii, szeregów czasowych, modelowania wyboru konsumenta itp. I oczywiście doskonała wizualizacja, dobra algebra i biblioteki numeryczne itp. Nie martwiłbym się zbytnio ograniczeniami wielkości danych. Chociaż R nie został zaprojektowany dla „dużych zbiorów danych” (w przeciwieństwie, powiedzmy, SAS), istnieją na to sposoby. Dostępność pakietów jest tym, co naprawdę robi różnicę.
Przeczytałem tylko specyfikacje językowe Clojure i jest to piękne i czyste. W naturalny sposób rozwiązuje problemy paralelizacji i skali. A jeśli masz podstawową wiedzę na temat java lub OOP, możesz skorzystać z dużej liczby wysokiej jakości bibliotek java.
Problem z Clojure dotyczy tego, że jest to niedawna jednoosobowa operacja (R.Hickey), dlatego 1) bardzo ryzykowna 2) bardzo niedojrzała 3) z przyjęciem niszowym. Idealne dla entuzjastów, początkujących użytkowników, osób CS / ML, które chcą wypróbować nowe rzeczy. Dla użytkownika, który postrzega język jako środek do celu i potrzebuje bardzo solidnego kodu, który można udostępniać innym osobom, ustalone języki wydają się bezpieczniejszym wyborem. Po prostu wiedz kim jesteś.
źródło
Aktualizacja (sierpień 2014): ponieważ @gappy komentarze poniżej, od wersji R 3.0.0 limity są wyższe i oznacza, że R jest w stanie obsługiwać większe zestawy danych.
Oto punkt danych: R ma „pułap dużych zbiorów danych” , przydatny, jeśli planujesz pracę z dużymi zestawami danych.
Nie jestem pewien, czy te same ograniczenia dotyczą Clojure / Incanter, czy przewyższa on R, czy też jest gorzej. Wyobrażam sobie, że JVM prawdopodobnie poradzi sobie z dużymi zestawami danych, zwłaszcza jeśli uda ci się wykorzystać moc leniwych funkcji Clojure.
źródło