R(프로그래밍 언어)
(♥ 0)
1. 개요[편집]
> hello <- "Hello, world!"
> hello
"Hello, world!"
R-project 공식 웹사이트
1992년 뉴질랜드에 위치한 오클랜드 대학교에서 개발된 통계(statistics) 및 그래프 작업을 위한 인터프리터 프로그래밍 언어이다. R이 가지는 특이사항 중 하나로, color를 colour라고 쓰는 것 또한 인정된다. 영국식 영어를 사용하는 뉴질랜드에서 개발돼서 얻은 특징인 듯 하다.
1.1. 다른 프로그래밍 언어 및 통계솔루션과의 비교[편집]
SPSS, STATA, SAS 등 유사 소프트웨어들이 있으며 요즘엔 Python도 많이 쓴다. SPSS는 통계학용이라는 목적만 같을 뿐 실제로 사용해보면 나머지 언어들과는 좀 다르다. STATA는 R에 비해 프로그래밍 자유도가 낮다는 등의 단점이 있지만, 대신 계량경제학(특히 실증미시경제학)에 특화되고 상대적으로 배우기 쉽다는 장점이 있다. SAS는 유료 통계분석 언어중에 가장 유명한 언어이다.[1] 위의 언어들 중 그나마 R에 가장 가깝다고 할 수 있다. Python은 앞의 언어들보다는 좀 더 일반적이고 범용성이 큰 언어이다. 통계나 수치해석을 위한 라이브러리를 동원해 통계분석용으로 쓸 수 있다.[2]
2. 특징[편집]
- 변수들이 저장되는 환경이라는 데이터 타입이 있다.
- 변수를 선언 및 할당하면 해당 변수가 .GlobalEnv 라는 환경에 생성된다.
- 기본적으로 함수의 매개변수로 받는 값은 함수 내부에서 값을 변경하더라도 외부에 반영되지 않는다. 이러한 이유로 일반적으로 함수를 정의하게 되면 순수함수가 되어 Side Effect 를 줄일 수 있다.
- 함수를 입력받거나 반환할 수 있어 함수형 프로그래밍을 하기에 용이하다.
- assign() 함수를 이용하여 동적으로 원하는 환경에 변수를 생성해낼 수 있으며 이를 이용하여 객체지향 프로그래밍을 구현해낼 수도 있다.
- Java, C, PHP 등 다른 프로그래밍 언어와 연결이 용이하고, 윈도우, 맥 OS, 리눅스 및 유닉스 등의 컴퓨터 운영체계를 지원한다.
3. 장점[편집]
- GPL로 배포되고 있어 무료로 사용할 수 있다. SPSS, MATLAB과 같은 상용 프로그램을 구입하지 않아도 된다.
- R에서 사용할 수 있는 수많은 통계 관련 패키지[3] 가 개발되어 있어서 인터넷을 통해 이 패키지들을 설치하는 식으로 무수한 기능 확장이 가능하다. 애초에 통계학자들이 만들어 낸 언어이며 통계 전문 언어 중 가장 보편적이기 때문에 내가 사용하고 싶은 모든 통계 기법이 이미 어딘가에 패키지 형태로 구현되어 있다고 봐도 된다. 여기서 찾아볼 수 있다.[4]
- 그래픽 관련 패키지를 설치하면 간단하게 다양한 그래프를 활용할 수 있으며[5] 구글이나 네이버 지도를 불러오거나 이를 활용해 GIS 용도로 쓰는 것도 가능하다.
- 데이터 클리닝관련 패키지도 다양하게 지원하기 때문에 데이터를 상황에 맞게 자유자재로 다루기가 수월하다.
- reticulate 패키지를 이용하여 Python 의 라이브러리들을 쉽게 활용할 수 있다.
- 웹 어플리케이션 개발 프레임워크인 Shiny의 고도화로 통계 또는 머신러닝 모델을 웹과 연동할 수 있다.
- 데이터 마이닝, 빅 데이터 프로세싱, 기계학습 등에 유용하다.
- 리스크, 재무, 마케팅 담당자 채용 시 R 능통자를 우대하기도 한다.
- 밑의 단점 단락에 멀티코어 프로세싱을 지원하지 않는다고 쓰여 있지만, Microsoft R Open을 사용하면 인텔 MKL 라이브러리를 이용해 멀티코어 프로세싱을 사용할 수 있다. 심지어 작업을 자동으로 서로 다른 코어에 할당하기 때문에 따로 코드를 작성할 필요도 없다! 하지만 R 유저들은 CRAN 대신 MRAN을 사용하는 것을 꺼리는 듯. 인텔 CPU가 아닌 경우에는 시스템 환경변수에 MKL_DEBUG_CPU_TYPE을 넣고 값을 5로 설정하면 된다[6] 고 한다.
- 기본적으로 함수를 통해 외부의 값을 바꾸는 것이 힘들기 때문에 부작용이 없는 코드를 작성하기에 유용하며 [7] 함수도 값처럼 쓸 수 있어 함수형 프로그래밍을 하기에도 좋다.
- reticulate 패키지를 이용해 파이썬 패키지를 불러와, R과 함께 병행하여 이용할 수 있다.
4. 단점[편집]
- 난이도
어렵다. 물론 이것은 컴퓨터 공학자가 아니라 일반인 입장에서 어렵다는 것이다. 해외의 프로그래머 커뮤니티를 둘러봐도 R의 난이도에 대한 악명을 쉽게 찾아볼 수 있다. 이 악명이 나온 이유가 있다. R이 원래 통계 프로그래밍 언어인 S를 그대로 배껴서 만들었기 때문이다.[8] 문제는 통계학자들도 R언어를 배워야 하는데, 다양하게 만들고 분석할 수 있는 장점과 프로그래밍을 알아야 한다는 단점을 가지게 되었다. 통계분석 프로그램으로 유명한 SAS, STATA, Minitab에 비하면 월등히 어려워서 한 동안은 대학에서도 취급하지 않았고, 일부 저널에서는 받아주지도 않았다. 2000년대 중후반에 코딩이 중요해지면서, R의 인기가 올라갔다. 인기가 올라간 이유 중 가장 큰 이유는 '공짜'라는 것이다. 통계 분석하는 함수들이 기본적으로 들어가있으면서, 무료로 프로그래밍이 가능하기에 현재 많은 통계분석 프로그램 유일하게 SAS의 명성을 따라잡을 수 있는 언어가 되었다. 이에 따라 R의 인기를 견제하고자 하는 SAS 또한 자사 프로그램을 대학에 무료 배포를 시작했다.[9] 나이 지긋하신 교수님들은 본인들이 대학원 시절에는 SAS를 통해 배웠기 때문에 그 교수님들 수업을 들으면 SAS를 어느 정도 알아야 이해를 할 수 있는 수업을 하는 경우가 많다.[10] 반대로 비교적 최근에 임용된 교수님들은 데이터 분석에서 R 또는 Python을 훨씬 더 많이 사용한다.
- 프로그래밍 언어로서의 설계
R은 입문자가 배우기에도 쉽지 않은 반면에, 정작 프로그래밍에 숙련된 사람에게도 당혹스러운 측면이 많다. 이는 R의 설계 자체가 일관적으로 통합되지 않았기 때문이다. 예컨대 객체 지향 프로그래밍을 위한 기본 클래스 종류만 해도 S3 클래스, S4 클래스로 나뉘어져 있으며, 최근에는 R6 패키지를 이용한 R6 클래스가 대두되고 있다.[11] 이러한 환경에 익숙하지 않은 사람은 객체지향 프로그래밍을 어떤 클래스로 구현할지부터 막막할 수 있다. 대개 다른 프로그래밍 언어에서는 상위 객체에 접근하는 리터럴로 사용되는 "."을 변수 이름에 버젓히 사용할 정도로[12] 다른 객체지향 프로그래밍 언어와 차이도 크다.
- 메모리
큰 데이터 집합을 이용할 때 문제가 발생할 수 있다. 데이터를 물리적 메모리에 저장해야 하기 때문이다. 데이터 뿐만 아니라, 분석할 때 사용하는 모든 '패키지'를 메모리에 저장하면서 사용하기 때문에 큰 메모리가 필요하다. 예로 들면, 몇 기가바이트 급의 데이터를 분석한다면, 패키지에 데이터를 램에 저장한다고 생각하면, 기본 맥북처럼 4GB 램인 컴퓨터는 분석도 제대로 못한다. 때문에 효율이 중시되는 프로젝트에서는 먼저 R로 구현한 후 그걸 C 등의 일반 프로그래밍 언어로 포팅하는 경우가 많다. 다른 경우는 복잡한 데이터 작업은 C 또는 Fortran(포트란)에서 작업시키고 결과만 가져오는 방식을 사용하기도 한다. 다만, 컴퓨터에 장착되는 메모리 용량이 증가함에 따라 이 문제는 점점 개선되고 있다.[13]
- 정보보호 기능 없음
과거에는 R을 백엔드 서버로 사용하여 계산을 수행하는 것도 불가능했으나, 아마존닷컴 웹 서비스 클라우드 플랫폼에서 가상 컨테이너를 사용하는 등의 기술이 개발되면서 보안 문제는 개선됐다.
- 유니코드 삽입 불가
프로그램 자체의 한국어 기능을 제공하지 않는다. 다른 프로그램들마냥 한국어 주석을 생각없이 넣었다가는 코드를 잘 짜놓고도 오류를 뽑아대는 모습을 볼 수 있을 것이다. 특히 함수나 for문 등 연속적인 작업이 이루어지는 코드 내부에 한글로 이루어진 주석을 꽉꽉 채워 넣거나 하지는 말도록 하자.
5. 통합 개발 환경(IDE) [편집]
5.1. R스튜디오[편집]
통합 개발 환경(IDE)으로 RStudio가 가장 무난하다. R 본체가 설치되어 있어야 작동하며, 훨씬 편리한 인터페이스를 제공하는 것이 강점.RStudio 설치하는 방법 한글등 폭넓은 인코딩및 설정을 지원하므로 안정적이다. 단, 윈도우의 경우 폴더 경로나 파일 이름에 한글이 들어가면 제대로 작동하지 않을 수 있으니 주의할 것. 특히 사용자 계정 이름이 한글일 경우 기본 폴더 경로 자체에 한글이 들어가게 되므로 제대로 실행되지 않을수있다. 이 경우 관리자 권한으로 실행시키면 된다.(RStudio 홈페이지) 당연히 리눅스등 유닉스 계열은 상관없다.[14]
RStudio에서 최근에는 Stan, C++, JAVA 등의 코딩도 할 수 있도록 지원하고 있기 때문에 범용성이 커졌다.
5.2. 기타 IDE 및 에디터[편집]
그 외의 IDE나 에디터들에는 다음이 있다. 보통 R에 대한 문법 검사와 코드 색상을 지원하는 플러그인 형태로 제공된다.
- ConTEXT
- Eclipse (StatET)
- Emacs (Emacs Speaks Statistics)
- LyX (modules for knitr and Sweave)
- vim
- jEdit
- Kate
- Revolution R Enterprise DevelopR (part of Revolution R Enterprise)
- Sublime Text
- TextMate
- Atom
- WinEdt (R Package RWinEdt)
- Tinn-R
- Notepad++
- IntelliJ IDEA
- Visual Studio
- Visual Studio Code [15]
- Architect
- RKWard
- DataSpell [16]
- Jamovi
글로벌 프로젝트 답게 File메뉴나 Tools메뉴에서 여러 인코딩을 지원하거나 선택후 바로 열어보기(open)기능이 강화됐다.
심지어는 내부 윈도우의 글자 크기도 별도의 조절이 가능하다.
6. 시각화 패키지[편집]
데이터를 그래프 등 보기 좋게 시각화해주는 패키지들
- ggplot2
- ggvis
- googleVis
- rCharts
- ggiraphExtra
- plotly
- wordcloud
7. 튜토리얼[편집]
- R cookbook: 요리 레서피 형태로 각 문제마다 해결 방법들을 나열해놓은 책이다. 출판도 되어있지만 온라인 웹페이지 형식으로도 제공되고, pdf도 다운받을 수 있다. 데이터 시각화(visualization) 기능을 위한 R graphics cookbook 역시 pdf로 다운받을 수 있다.
8. 관련 문서[편집]
- 통계학
- 데이터 마이닝
- 빅 데이터 프로세싱
- 알고리즘 트레이딩: 미국 금융업이나 미국 학계에서는 R로 하는 알고리즘 트레이딩을 가르친다. 해당 서적이 한국에 번역도 됐다.
이 문서의 내용 중 전체 또는 일부는 2024-08-20 23:12:19에 나무위키 R(프로그래밍 언어) 문서에서 가져왔습니다.
[1] 공대에서 매트랩의 위상을 떠올리면 이와 얼추 비슷하다.[2] 예컨대, R의 data.frame을 본떠서 설계한 DataFrame이라는 데이터 구조를 기반으로 만들어진 Pandas 패키지를 사용한다.[3] 추가 기능이라고 볼 수 있다. R의 내장함수를 사용하는게 아니라 자신이 직접 함수를 만들어야한다거나, 외부 언어나 자료를 끌어온다거나, 복잡한 프로그래밍을 해야할 때가 있다. 이런 작업을 사전에 마친 사람이 자신이 만든 소스를 공개하는 것이라고 보면 된다. 평범한 R 사용자들은 이러한 소스를 받아서 쓴다.[4] 2018년 4월 22일 현재 12,500여개의 패키지가 있다.[5] 대표적으로 ggplot2 패키지가 있다. 사용이 쉽고 굉장히 미려하다.[6] 출처[7] 물론 assign함수를 이용하면 외부의 값을 자유자재로 바꿀 수 있기는 하다.[8] R를 S의 구현체 중 하나로 보기도 한다.[9] 담배회사에서 손해(?)를 보면서도 담배를 훔치는 청소년을 잡지말라는 것처럼, 대학시절부터 무료로 SAS를 사용하면서 SAS에 익숙해져야 사회나가서도 SAS를 찾기 때문. 회사에서 SAS를 쓰려면 정말 비싸게 주고 라이센스를 구매해야한다.[10] 특히 실험계획법이나 회귀분석과 같은 선형모형 수업. 이제 정년을 앞둔 사람 입장에서 이미 수업에서 사용되는 예제들의 코드가 만들어져 있어서 Run 한 번만 누르면 되는데, 굳이 새로운 언어를 배워서 코드를 바꿀 사람은 거의 없기 때문. 하지만 대학원생이 있다면...[11] R6 패키지는 S3, S4 클래스보다 더 일반적인 객체지향 프로그램을 하기 위해 개발되었다. Perl 의 Moose와 비슷한 측면이 있다.[12] R에서는 "."을 변수 이름으로 사용하는 대신 "$" 이 쓰인다.[13] 물론 개선된다기보단 문제시되지 않는 쪽으로 변하는 중이라는 것이다.[14] 디폴트는 UTF-8이므로 MS윈도우에서 작성된 파일을 불러올경우 CP949등의 인코딩 불러오기를 해주면 된다.[15] R와 https://marketplace.visualstudio.com/items?itemName=auchenberg.vscode-browser-preview를 VSCode 에 설치하고 httpgd를 쓰면 R Studio 못지 않는 환경에서 작업 할 수 있다.[16] 다만 애플 실리콘 베이스의 맥북들에서 "R Wrapper Terminated" 라는 문구와 함께 R 은 실행이 되지 않는다는 보고가 있다