Clojure vs R : 데이터 분석의 장단점


39

나는 가까운 장래에 R을 배우는 계획을 가지고있었습니다. 독서 또 다른 질문 내가 Clojure에 대해 알게합니다. 이제 어떻게해야할지 모르겠습니다.

저는 R 의 큰 장점은 관리자 중 한 명을 포함하여 일부 경제학 직원이 R 을 사용하지 않는다는 것입니다. Clojure의 장점 중 하나 는 Lisp 기반이며, Emacs를 배우기 시작했고 내 자신의 사용자 정의를 작성하는 데 관심이 있다면 도움이 될 것입니다 (예, Clojure와 Elisp는 Lisp의 다른 방언이지만 리스프와 비슷한 것을 상상해보십시오.)

나는 이것이 개인적이라는 것을 알고 있기 때문에 어느 것이 더 좋은지 물어볼 수는 없지만 누군가가 Clojure x R의 장점 (또는 장점)을 특히 실용적인 용어로 나에게 줄 수 있습니까? 예를 들어, 어느 것이 더 배우기 쉬워야하고, 어느 것이 더 유연하고 더 강력하며, 어느 것이 더 많은 도서관, 더 많은 지원, 더 많은 사용자 등을 가지고 있습니까?

내 의도 된 용도 : Matlab을 사용하여 대부분의 추정을 수행해야하므로 통계 분석 측면에서 너무 심오한 것이 아니라 초기 데이터 조작 및 시각화, 요약 통계 및 차트를 Excel 대신 사용할 소프트웨어를 찾고 있습니다. 또한 기본적인 통계 분석 또는 초기 추정 시도.


10
R을 맛 본다면 MATLAB에서 사임 할 가능성이 높습니다 (제 경우와 같이).

IMO는 커뮤니티 위키 여야합니다 (언어 "대") 유형 질문은 매우 주관적입니다).
셰인

이것은 분명히 프로그래밍 언어에 관한 질문이며 Stack Overflow에 문의해야합니다.
Sharpie

나는 Sharpie에 동의합니다. @Vivi : 질문 제목을 "데이터 뭉치기의 장점과 단점"또는 그 줄을 따라 다른 주제로 변경하여 주제를보다 많이 토픽해야합니다.
셰인

5
@Sharpie, @Shane IMO는 도구에 관한 질문이므로 허용됩니다.

답변:


27

두 언어를 모두 좋아한다는 말로 시작하겠습니다. 둘 중 하나는 잘못 될 수 없으며 데이터 분석을 수행하는 데 C ++ 또는 Java와 같은 것보다 확실히 좋습니다.

기본 데이터 분석을 위해 R (특히 plyr)을 제안합니다. Clojure가 Lisp를 기반으로하고 있으며 사용 가능한 환상적인 Lisp 리소스 (예 : SICP ) 가 많기 때문에 IMO, R은 Clojure보다 배우기가 약간 더 쉽습니다 . Clojure에는 키워드가 적지 만 라이브러리를 설치하고 사용하기가 훨씬 어렵습니다. 또한 R (또는 S)은 주로 Scheme에서 파생되므로 Lisp 지식을 사용하면 도움이됩니다.

일반적으로 :

R의 주요 장점은 CRAN의 커뮤니티 (2461 개 이상의 패키지 및 계산)입니다. 가까운 시일 내에 matlab과 같은 상용 응용 프로그램도 이것과 비교할 수 없습니다.

Clojure는 JVM에서 실행할 수 있다는 큰 이점이 있으므로 모든 Java 기반 라이브러리를 즉시 사용할 수 있습니다.

내가 준 추가 할 R에 Clojure의 / 주문 술사 관련된 이야기를 당신이 관심을 찾을 수 있도록, 얼마 전에. 이것을 만드는 경험에서 Clojure는 일반적으로 간단한 작업의 경우 R보다 느 렸습니다.


11

지난 6 ~ 7 년 동안 R을 많이 사용했습니다. 언어로서 몇 가지 디자인 제한이 있습니다. 그러나 계량 경제학 및 데이터 분석 분야에서는 여전히 진심으로 추천합니다. 그것은 계량 경제학, 시계열, 소비자 선택 모델링 등을 위해 당신과 관련이있는 많은 패키지를 가지고 있으며 물론 뛰어난 시각화, 좋은 대수 및 숫자 라이브러리 등입니다. 나는 데이터 크기 제한에 대해 너무 걱정하지 않을 것입니다. R은 "빅 데이터"(SAS와 달리) 용으로 설계되지 않았지만 그 주변에는 여러 가지 방법이 있습니다. 패키지의 가용성은 실제로 차이를 만듭니다.

Clojure의 언어 사양 만 읽었으며 아름답고 깨끗합니다. 그것은 병렬화와 규모의 문제를 자연스럽게 해결합니다. 기본적인 Java 또는 OOP 지식이있는 경우 많은 수의 고품질 Java 라이브러리를 활용할 수 있습니다.

Clojure와 관련된 문제는 최근 한 사람 (R.Hickey) 작업이므로 1) 매우 위험합니다 2) 매우 미숙합니다 3) 틈새 채택. 매니아, 얼리 어답터, 새로운 것을 시도하려는 CS / ML 사람들에게 적합합니다. 언어를 목적의 수단으로보고 다른 사람들과 코드를 공유 할 수있는 매우 강력한 코드가 필요한 사용자에게는 확립 된 언어가 더 안전한 선택 인 것 같습니다. 당신이 누군지 알아


+1 좋은 답변입니다. 나는 Incanter에 흥미를 느꼈고 (일부 Java 코딩을 했으므로) 비슷한 논쟁을 벌였습니다. Clojure는 컴퓨터 과학자처럼 생각하기 위해 사용하는 언어 인 반면 R은 통계 작업을 신속하게 수행하는 데 사용하는 언어였습니다. 분명히 겹치는 부분이 있지만 "당신이 누구인지 알고 있습니다."
Josh Hemann

SAS는 너무 오래되어 원래 펀치 카드에서 실행되었으므로 어색하고 구식 인 구문입니다. "빅 데이터 디자인"의 일부는 단순히 휴대 전화보다 메모리가 적은 "메인 프레임"에서 실행되도록 설계되었으며 펀치 카드를 사용하여 데이터를 입력 한 것입니다. 빅 데이터를 잘 처리한다고해도 빅 데이터를 위해 "설계되었다"고 말하지는 않습니다.
Wayne

2011 년 Clojure에 대해 처음 알게되었을 때 비슷한 우려가있었습니다. Clojure와 그 커뮤니티는 상당히 성숙했으며 놀랍게도 인기가 있습니다 (결국 비 기능적이며 Lisp입니다). 그러나 Incanter가 패키지 수에서 R을 따라 잡을 것이라고는 생각하지 않습니다 (보통 생각할 수 있다면 이미 완료되었습니다). JRI Java-R 인터페이스를 기반으로 한 Clojure 라이브러리 Rincanter가 있지만 이것이 얼마나 쉬운 지 잘 모르겠습니다.
화성

5

업데이트 (2014 년 8 월) : 아래 @gappy 주석에서 R 버전 3.0.0부터 한계가 높으며 R이 더 큰 데이터 세트를 처리 할 수 ​​있음을 의미합니다.

데이터 포인트는 다음과 같습니다. R에는 "큰 데이터 상한값"이 있으며, 대규모 데이터 세트 작업을 계획하고 있는지 여부를 알 수 있습니다.

Clojure / Incanter에 동일한 제한이 적용되는지, R보다 성능이 우수하거나 실제로 더 나쁜지 확실하지 않습니다. 특히 Clojure의 게으른 기능을 활용하는 경우 JVM이 대용량 데이터 세트를 처리 할 수 ​​있다고 생각합니다.


1
R은 또한 지연 평가된다.

3
@mbq : 댓글이 잘못되었습니다. R은 함수 정의에서 변수를 느리게 평가하지만 "게으름"은 정상적인 동작이 아닙니다. delayedAssign () 함수는 인터프리터에게 변수의 할당으로 게 으르도록 지시하기 위해 존재하지만, 인터프리터는 데이터 구조가 해당 변수를 가리키면 평가 여부에 관계없이 평가를 수행합니다. 또한 상용 R 회사 인 Revolution Analytics는 "빅 데이터"분석에서 R을 사용하기위한 마케팅을 지원하기 위해 반복자 객체를 만들어야했습니다.
Josh Hemann

이 답변을 업데이트해야한다고 생각합니다. R 3.0.0 이후 R 하는가 하지 이상 2 ^ 31-1 소자의 한계를 가지고있다. 한도는 배열의 각 차원 에서 2 ^ 63-1 (믿습니다) 및 2 ^ 31-1이 아닙니다 . 이것은 메모리의 큰 객체에 적합합니다.
gappy
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.