R 언어 – R 프로그래밍을 해보며
2017년 12월 26일에 작성된 포스트입니다.

8c7958cb652b36ffea50fae935118b3646fdc3c1932161573b8551ac462178bce26685384d2a2591132d9a45ee68c2b0edd8a80e2c77852abb380ed6976a4d76be5b2fc0f73917e0bf7d0d8557342724

대학원 수업에서 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 언어를 다시 만날 수 있기를 바라며 마친다.


현식로그 홈 정보기술(IT) 목록

Copyright © HS LOG
Published on 12월 26, 2017 Filed under: IT issue; Tagged as: , , ,

No Comments

방문해 주셔서 감사합니다. 답글을 남겨주시면 잊지 못할 것입니다.

현식로그 홈 정보기술(IT) 목록

 
이 글의 방문자수는 1,092 입니다. (젯팩이 측정)