R(프로그래밍 언어)

 


[image]
1. 개요
1.1. 다른 프로그래밍 언어 및 통계솔루션과의 비교
2. 장점
3. 단점
4. 통합 개발 환경 (IDE)
5. 시각화 패키지
6. 튜토리얼
7. 관련 문서


1. 개요


cat("Hello World \n")
R-project 공식 웹사이트
1993년 뉴질랜드에 위치한 오클랜드 대학교에서 개발된 통계 및 그래프 작업을 위한 인터프리터 프로그래밍 언어이다. R이 가지는 특이사항 중 하나로, color를 colour라고 쓰는 것 또한 인정된다. 영국식 영어를 사용하는 뉴질랜드에서 개발돼서 얻은 특징인듯.
참고로, R을 BSD의 일종인 TrueOS에서 설치할 수 있다. R in TrueOS 참조.

1.1. 다른 프로그래밍 언어 및 통계솔루션과의 비교


SPSS, STATA, SAS 등 유사 소프트웨어들이 있으며 요즘엔 Python도 많이 쓴다. SPSS는 통계학용이라는 목적만 같을 뿐 실제로 사용해보면 나머지 언어들과는 좀 다르다. STATA는 R에 비해 프로그래밍 자유도가 낮다는 등의 단점이 있지만, 대신 계량경제학(특히 실증미시경제학)에 특화되고 상대적으로 배우기 쉽다는 장점이 있다. SAS는 유료 통계분석 언어중에 가장 유명한 언어이다.[1] 위의 언어들 중 그나마 R에 가장 가깝다고 할 수 있다. Python은 앞의 언어들보다는 좀 더 일반적이고 범용성이 큰 언어이다. 통계나 수치해석을 위한 라이브러리를 동원해 통계분석용으로 쓸 수 있다.[2]

2. 장점


  • GPL로 배포되고 있어 무료로 사용할 수 있다. SPSS, MATLAB과 같은 상용 프로그램을 구입하지 않아도 된다.
  • R에서 사용할 수 있는 수많은 통계 관련 패키지[3]가 개발되어 있어서 인터넷을 통해 이 패키지들을 설치하는 식으로 무수한 기능 확장이 가능하다. 애초에 통계학자들이 만들어 낸 언어이며 통계 전문 언어 중 가장 보편적이기 때문에 내가 사용하고 싶은 모든 통계 기법이 이미 어딘가에 패키지 형태로 구현되어 있다고 봐도 된다. 여기서 찾아볼 수 있다.[4]
  • 그래픽 관련 패키지를 설치하면 간단하게 다양한 그래프를 활용할 수 있으며[5] 구글이나 네이버 지도를 불러오거나 이를 활용해 GIS 용도로 쓰는 것도 가능하다.
  • 웹 어플리케이션 개발 프레임워크인 Shiny의 고도화로 통계 또는 머신러닝 모델을 웹과 연동할 수 있다.
  • 데이터 마이닝, 빅 데이터 프로세싱, 기계학습 등에 유용하다.
  • 리스크, 재무, 마케팅 담당자 채용 시 R 능통자를 우대하기도 한다.
  • 밑의 단점 단락에 멀티코어 프로세싱을 지원하지 않는다고 쓰여 있지만, Microsoft R Open을 사용하면 인텔 MKL 라이브러리를 이용해 멀티코어 프로세싱을 사용할 수 있다. 심지어 작업을 자동으로 서로 다른 코어에 할당하기 때문에 따로 코드를 작성할 필요도 없다! 하지만 R 유저들은 CRAN 대신 MRAN을 사용하는 것을 꺼리는 듯.

3. 단점


  • 난이도
어렵다. 물론 이것은 컴퓨터 공학자가 아니라 일반인 입장에서 어렵다는 것이다. 해외의 프로그래머 커뮤니티를 둘러봐도 R의 난이도에 대한 악명을 쉽게 찾아볼 수 있다. 이 악명이 나온 이유가 있다. R자체가 원래 통계 프로그램인 S를 그대로 배껴서 만든 프로그램이었기에 R은 원래 통계분석 프로그램이였다. 문제는 통계학자들도 R언어를 배워야하는데, 프로그래밍이 가능하게 만들면서 다양하게 만들고 분석할 수 있는 가능성을 갖음과 동시에, 프로그래밍을 알아야 한다는 단점이 생겼다. 통계분석 프로그램으로 유명한 SAS, STATA, Minitab에 비하면 월등히 어려워서 한 동안은 대학에서도 취급하지 않았고, 일부 저널에서는 받아주지도 않았다. 2000년대 중후반에 코딩이 중요해지면서, R의 인기가 올라갔다. 인기가 올라간 이유 중 가장 큰 이유는 '공짜'라는 것이다. 통계 분석하는 함수들이 기본적으로 들어가있으면서, 무료로 프로그래밍이 가능하기에 현재 많은 통계분석 프로그램 유일하게 SAS의 명성을 따라잡을 수 있는 언어가 되었다. 이에 따라 R의 인기를 견제하고자 하는 SAS 또한 자사 프로그램을 대학에 공짜로 풀기 시작했다.
  • 메모리
큰 데이터 집합을 이용할 때 문제가 발생할 수 있다. 데이터를 물리적 메모리에 저장해야 하기 때문이다. 데이터 뿐만 아니라, 분석할 때 사용하는 모든 '패키지'를 메모리에 저장하면서 사용하기 때문에 큰 메모리가 필요하다. 예로 들면, 몇 기가바이트 급의 데이터를 분석한다면, 패키지에 데이터를 램에 저장한다고 생각하면, 기본 맥북처럼 4GB 램인 컴퓨터는 분석도 제대로 못한다. 때문에 효율이 중시되는 프로젝트에서는 먼저 R로 구현한 후 그걸 C 등의 일반 프로그래밍 언어로 포팅하는 경우가 많다. 다른 경우는 복잡한 데이터 작업은 C 또는 Fortran(포트란)에서 작업시키고 결과만 가져오는 방식을 사용하기도 한다. 다만, 컴퓨터에 장착되는 메모리 용량이 증가함에 따라 이 문제는 점점 개선되고 있다.
과거에는 R을 백엔드 서버로 사용하여 계산을 수행하는 것도 불가능했으나, 아마존닷컴 웹 서비스 클라우드 플랫폼에서 가상 컨테이너를 사용하는 등의 기술이 개발되면서 보안 문제는 개선됐다.
  • 프로그램 자체의 한국어 기능을 제공하지 않는다. 다른 프로그램들마냥 한국어 주석을 생각없이 넣었다가는 코드를 잘 짜놓고도 오류를 뽑아대는 모습을 볼 수 있을 것이다. 특히 함수나 for문 등 연속적인 작업이 이루어지는 코드 내부에 한글로 이루어진 주석을 꽉꽉 채워 넣거나 하지는 말도록 하자.

4. 통합 개발 환경 (IDE)


통합 개발 환경으로 RStudio가 가장 무난하다. R 본체가 설치되어 있어야 작동하며, 훨씬 편리한 인터페이스를 제공하는 것이 강점. 단, 폴더 경로나 파일 이름에 한글이 들어가면 제대로 작동하지 않을 수 있으니 주의할 것. 특히 사용자 계정 이름이 한글일 경우 기본 폴더 경로 자체에 한글이 들어가게 되므로 제대로 실행되지 않는다. 이 경우 관리자 권한으로 실행시키면 된다. RStudio 홈페이지
그 외의 IDE나 에디터들에는 다음이 있다. 보통 R에 대한 문법 검사와 코드 색상을 지원하는 플러그인 형태로 제공된다.

5. 시각화 패키지


데이터를 그래프 등 보기 좋게 시각화해주는 패키지들
  • ggplot2
  • ggvis
  • googleVis
  • rCharts
  • ggiraphExtra
  • plotly
  • wordcloud

6. 튜토리얼


  • 코드스쿨
  • R cookbook: 요리 레서피 형태로 각 문제마다 해결 방법들을 나열해놓은 책이다. 출판도 되어있지만 온라인 웹페이지 형식으로도 제공되고, pdf도 다운받을 수 있다. 데이터 시각화(visualization) 기능을 위한 R graphics cookbook 역시 pdf로 다운받을 수 있다.

7. 관련 문서



[1] 공대에서 매트랩의 위상을 떠올리면 이와 얼추 비슷하다.[2] 예컨대, R의 data.frame을 본떠서 설계한 DataFrame이라는 데이터 구조를 기반으로 만들어진 pandas 패키지를 사용한다.[3] 추가 기능이라고 볼 수 있다. R의 내장함수를 사용하는게 아니라 자신이 직접 함수를 만들어야한다거나, 외부 언어나 자료를 끌어온다거나, 복잡한 프로그래밍을 해야할 때가 있다. 이런 작업을 사전에 마친 사람이 자신이 만든 소스를 공개하는 것이라고 보면 된다. 평범한 R 사용자들은 이러한 소스를 받아서 쓴다.[4] 2018년 4월 22일 현재 12,500여개의 패키지가 있다.[5] 대표적으로 ggplot2 패키지가 있다. 사용이 쉽고 굉장히 미려하다.