대학원 수업에서 R 을 접하게 되어서 한 한기동안 대략적으로 R 의 느낌을 살펴보았는데, 이대로 끝내기에는 아쉬운 마음에 가볍게 관련 포스트를 작성한다.
※ R 프로그래밍 언어 : 나무위키 참고
※ R 소개 및 다운로드 : //www.r-project.org/
※ RStudio 소개 및 다운로드 : //www.rstudio.com/
R 언어는 1993년 오클랜드 대학교에서 개발된 통계 및 그래프 작업을 위한 인터프리터 프로그래밍 언어로 GNU GPL 라이센스로 배포되고 있기 때문에 무료로 사용할 수 있다.
※ GNU : GNU is Not Unix, GPL : General Public Licens
※ GNU : 위키피디아 참고
※ GPL : 위키피디아 참고
개인적으로는 굉장한 짬뽕 언어로 느껴졌다. SQL 에 일반 프로그래밍 언어를 입혔는데, 만든 사람들은 일반 개발자가 아닌 통계학자들인 것 같은 느낌이라고 할까… 가장 쉬운 예로 대입문도 “=” 가 아닌 “<-” 로 표현하는 것이 일반적으로나 통계학자의 입장에서는 당연한 느낌이겠지만, 프로그래머의 입장에서는 굉장히 독특한 것이니 말이다.
※ 물론 R 언어 안에서는 “=” 도 “<-” 와 동일하게 인식한다.
※ IDE(통합개발환경)은 RStudio 를 사용해보았는데 상당히 편리하다.
[일반적으로 IDE 는 오직 그 언어만을 위한 IDE 가 당연히 가장 편하다.]
R 은 통계 자체를 위한 목적에 강력하게 반응한다. 대용량 데이터를 다양한 방식으로 받아들이고 그 데이터들을 빠르게 핸들링할 수 있으며, SQL 을 포함한 다양한 언어 및 프로그램보다 쉽고 간단하게 여러가지 통계 관련 자료 및 그래프 등의 이미지를 만들어낼 수 있다.
※ 오픈소스 답게 패키지(라이브러리)의 양도 어마어마하다.
단, R 은 프로그램을 만드는 언어는 아닌 것으로 보인다. 프로그래머의 관점에서 바라보면 R 은 데이터베이스만을 핸들링하는 SQL 과 흡사하다. 만약 R 을 사용한 프로그램을 개발해야 한다면, 프로그램 안에서 DB 에 연결하고 SQL 을 전달하여 그 결과값을 이용하는 것처럼, 다른 언어로 프로그램을 개발하며 R 언어를 그 중간에 삽입하여 사용할 수는 있을 것으로 보인다.
※ 물론 R은 원래 목적이 통계이며, 굳이 프로그램화 할 필요는 없어보인다.
R 프로그래밍의 간단히 예제를 소개하자면 아래와 같다.
######################### ########### 1 ########### ######################### quadratic_formula <- function (a, b, c) { d <- (b^2) - (4*a*c); if(d < 0) { return('There are no real roots.'); } else { numerator1 <- (-b) + sqrt(d); numerator2 <- (-b) - sqrt(d); denumerator <- 2*a; result = list( minus_result = numerator1/denumerator, plus_result = numerator2/denumerator ); return(result); } } quadratic_formula(1, 3, 2); ######################### ########### 2 ########### ######################### ################ ##### 2(a) ##### ################ z=0; for(i in 1:10) { for(j in 1:10) { z <- z + ((i^4) / (10 + 4*(j^3))); } } z; ################ ##### 2(b) ##### ################ z=0; for(i in 1:10) { for(j in 1:10) { z <- z + (3 + (i*j)); } } z; ######################### ########### 3 ########### ######################### somefunction <- function (x) { result <- NULL; for(i in 1:length(na.exclude(x))) { if(x[i] < 0) { result <- cbind(result, (x[i]^2) + (2*x[i]) + 3); } else if(x[i] >= 0 && x[i] < 2) { result <- cbind(result, x[i] + 3); } else if(x[i] >= 2) { result <- cbind(result, (x[i]^2) + (4*x[i]) - 7); } } return(result); } ######################### ########### 4 ########### ######################### xaxis <- seq(-3,3); yaxis <- somefunction(xaxis); rbind(xaxis, yaxis); ## check the result value ## plot(xaxis, yaxis); ######################### ########### 5 ########### ######################### mtcars[mtcars$mpg>25,]; ######################### ########### 6 ########### ######################### mtcars[c(order(-mtcars$cyl, mtcars$mpg)),]; ######################### ########### 7 ########### ######################### library(plyr); ddply(mtcars, .(am=mtcars$am, cyl=mtcars$cyl), summarize, mpg=mean(mpg), wt=mean(wt)); ######################### ########### 8 ########### ######################### mean(mtcars[mtcars$hp > 150,]$mpg); mean(mtcars[mtcars$hp > 150,]$wt);
개인적으로 별로 좋아하지 않는 단어인 “4차 혁명”이라는 단어를 사용할 때 “빅 데이터” 라는 단어가 들어가게 되고, “빅 데이터”가 들어갈 때 자주 등장하는 언어가 바로 R 언어이다. “4차 혁명”, “빅 데이터”는 잘 모르겠지만, R 언어는 분명히 재미있는 언어가 맞으며, 통계 분석에는 막강한 것이 확실하다. t.test(), prop.test(), var.test(), lm(), plot() 등과 같은 통계 검정/분석 및 그래프 작성과 관련된 함수들이 기초적으로도 막강하게 지원되며, 추가 패키지로도 어마어마하게 지원되고 있기 때문이다.
또한 R 을 사용하는 것은 오직 통계를 위한 데이터 처리를 위하여 사용하는 것이고, 때문에 프로그래밍에 대한 지식보다 통계학에 대한 지식이 훨씬 더 많이 요구된다. SQL 과 비슷하지만, SQL 의 다양한 목적과는 다르게 완전히 통계 분석을 위한 언어로 판단된다.
R 이라는 생소한 언어를 통해 오랜만에 프로그래밍을 해보게 되어 조금은 즐거웠었던 것 같다. 통계를 잘 알고 있다면 더 재미있게 할 수 있었을 것 같은데 그렇지 못했기 때문에 아쉽다. 언젠가 통계와 R 언어를 다시 만날 수 있기를 바라며 마친다.