728x90
반응형

패키지(Packages)란

오픈 소스인 R의 장점은 다른 사용자들이 만들어놓은 함수들을 쓸 수 있다는 것이다. 이 함수들의 모음을 패키지(Package)라고 하며, R을 이용하는 사람은 인터넷이 된다면, 언제, 어디서든지 이 패키지를 다운 받아서 사용할 수 있다.

  • 패키지 공유는 CLAN(http://cran.r-project.org)의 'Packages'를 눌러서 어떤 패키지가 있는지 볼 수 있으며, 인터넷을 사용할 수 없는 환경에서 R을 써야하는 경우, 해당 싸이트에서 미리 사용할 패키지들을 다운받아올 수 있다. 
  • R은 스크립트 언어(간략히 말하면, 어떤 기능을 쓰고자할 때, 그 기능을 처음부터 만들 필요 없이, 그 기능이 담긴 함수를 사용하면 되는 언어란 소리이다.)이며, 스크립트 언어로써의 기능을 잘 활용하려면, 상황에 맞게 내게 필요한 패키지를 찾는 능력이 필요하다.
  • 각 패키지는 그 사용방법을 익히는데 도움을 주기 위한 내장 데이터셋을 가지고 있다.
  • 패키지 설치 후 패키지 이름에 커서를 올린 상태에서 F1을 누르면 해당 패키지에 대한 자세한 정보를 얻을 수 있는 링크등으로 이동할 수 있다.

 

 

 

패키지 관련 함수

  • available.packages("패키지 이름")
    : 해당 패키지가 CRAN에 등재되어 있는지 확인할 수 있는 함수.
  • install.packages("패키지 이름")
    : 해당 해키지를 설치하는 방법.
    패키지는 한번 설치하면, 더 이상 설치하지 않아도 된다.
  • library(패키지 이름)
    : 패키지를 사용하기 위해 가지고 온다.
    특정 패키지를 사용하고 싶을 때, 반드시 해당 코드를 한 번은 실행해 줘야한다.
  • library(help = 패키지 이름)
    : 패키지에 대한 정보를 출력한다.
    (패키지의 라이센스, 버전, 제작자 등을 표시하고, 패키지 안에 들어 있는 함수등을 표기한다.)
  • update.packages("패키지 이름")
    : 해당 패키지를 업데이트한다.
  • updata.packages()
    : 모든 패키지를 업데이트한다.
  • remove.packages("패키지 이름")
    : 해당 패키지를 삭제한다.
  • remove.packages()
    : 모든 패키지를 삭제한다.
  • 패키지이름::패키지의함수()
    : library() 함수를 사용하지 않고, 특정 패키지의 특정 함수를 사용한다.
    • 여러 패키지를 사용하는 경우, 패키지의 이름은 다르나, 함수가 동일한 경우가 종종 있다. 이 경우, 위 방법처럼 콜론을 2개 연달아 사용하면, 해당 함수가 어떤 패키지의 것인지를 쉽게 구분할 수 있다.
  • data(package = .packages(all.available = TRUE))
    : 설치된 패키지의 모든 내장 데이터를 볼 수 있다.
# dplyr 패키지의 내장데이터를 확인해보자
data_list = data(package = .packages(all.available = TRUE))
data_list$results[data_list$results[,"Package"] == "dplyr", ]
##      Package LibPath                             Item               
## [1,] "dplyr" "C:/RBasicFolder/R/R-4.0.1/library" "band_instruments" 
## [2,] "dplyr" "C:/RBasicFolder/R/R-4.0.1/library" "band_instruments2"
## [3,] "dplyr" "C:/RBasicFolder/R/R-4.0.1/library" "band_members"     
## [4,] "dplyr" "C:/RBasicFolder/R/R-4.0.1/library" "starwars"         
## [5,] "dplyr" "C:/RBasicFolder/R/R-4.0.1/library" "storms"           
##      Title                
## [1,] "Band membership"    
## [2,] "Band membership"    
## [3,] "Band membership"    
## [4,] "Starwars characters"
## [5,] "Storm tracks data"
  • 위 코드는 dplyr 패키지의 내장 데이터 목록을 행렬 형태로 가지고 온 것이다.
  • Item은 내장 데이터의 이름이다.
  • 위에서 "dplyr"만 다른 패키지의 이름으로 바꿔주면, 해당 패키지의 내장 데이터셋 목록을 가지고 올 수 있다.

 

 

 

수동으로 패키지 사용하기

  • R을 효율적으로 사용할 수 있게 해주는 RStudio에는, 설치된 패키지, library로 import된 패키지, 패키지 업데이트 등을 쉽게 할 수 있는 창을 따로 제공하고 있다.

  • 우측 하단의 Packages 버튼을 누르면, 현재 R에 어떤 패키지들이 설치 되어있고, 그 버전은 어떠한지를 구체적으로 볼 수 있다.
  • 특정 패키지의 체크박스를 선택하고, Packages 바로 아래에 있는 Update 버튼을 누르면, 해당 패키지를 업데이트 할 수 있다.
  • 패키지의 이름을 클릭하면 Help창으로 자동 이동되고, 해당 패키지에 어떤 함수가 있는지와 간략한 설명을 볼 수 있다. 또한 내가 궁금한 함수를 클릭하면, 보다 자세한 설명을 볼 수 있다.

 

 

 

패키지와 오류

1) 패키지의 의존성 문제

  • 대부분의 패키지는 설치할 때, 큰 어려움이 없으나, 가끔 아주 강력한 패키지를 설치할 때, 오류가 걸리는 일이 종종 발생할 수 있다.
  • 이는, 환경의 문제로 해당 패키지를 개발할 때, 들어간 소프트웨어가 해당 패키지를 설치하고자 하는 사람의 컴퓨터에 깔려 있지 않아서 발생하는 문제이다.
    (물론 전부 이 경우라고는 할 수 없지만, 대부분 이렇다!)
  • 이 경우에는 설치하고자 하는 패키지의 정보를 확인하고, 이 패키지에 필요한 소프트웨어를 설치해주면 된다.
  • R > CRAN > Korea(하단 아무 거나 클릭) > Packages > Table of available packages, sorted by name(이름 순 정렬) > ctrl + F로 문제 있는 패키지 검색 후 클릭 > SystemRequirements 옆에 있는 내용 확인
  • SystemRequirements 에 있는 소프트웨어가 설치되어야만 해당 패키지를 정상적으로 사용할 수 있다.
  • 추가로 에러 문구를 자세히 읽어보고, 구글링을 생활화하자!
    • 위에서 말한 소프트웨어 설치가 또 쉽지만은 않다. 그러므로, 해당 패키지 설치 방법을 구글에서 검색해보는 것이 베스트다.(이 고통을 나 혼자 겪은 것이 아니므로!)
    • R에서 당신이 겪은 대부분의 문제는 다른 사람도 겪었고, 개발자와의 소통 등을 통해서 대부분 해결된 문제이므로, 구글링을 하거나 Stack Overflow를 이용해서 해당 문제를 찾도록 해보자.

 

 

2) 패키지 업데이트의 문제

  • 일반적으로 우리가 생각할 땐, 업데이트가 된 최신 버전이 가장 좋은 것이라고 생각하기가 쉬운데, 그 말이 R과 같은 오픈소스에서도 똑같이 통용되는 말은 아니다.
  • 업데이트가 되면서 기존에 사용했던 함수에 새로운 파라미터가 주어졌을 수도 있고, 약간 기능이 바뀌었거나, 기존에 쓰고 있던 기능이 사라졌을 수도 있다!
    (물론 제작자가 상식적인 수준에서 변화를 주긴 했겠지만!)
  • 당장 코드를 짤 땐, 큰 지장이 없을 수 있지만, 이미 길게 짜놓은 코드가 에러를 일으킬 가능성이 있으므로, 업데이트가 반드시 만능은 아니라고 생각하면 된다.
  • 특히나, 지금까지 잘 사용했던 패키지가 돌연 업데이트를 멈추게 되는경우, R을 업데이트 했으나, R 패키지는 업데이트 되지 않아 서로 호환되지 않는 문제가 발생할 수도 있다.

 

 

3) 리눅스에서 R 패키지를 다운받는 경우 발생할 수 있는 문제.

  • 리눅스에서 R을 사용하다보면 다음과 같은 문제가 종종 발생할 수 있다.

  • ANTICONF ERROR Configuration failed because libmysqlclient was not found.......
  • 위 오류에서 libmysqlclient 특히 "mysql" 이 부분은 설치하고자 하는 패키지 이름에 따라 바뀔 수 있다.
  • 해당 오류는 말 그대로 내가 설치하고자 하는 패키지를 찾지 못한 문제인데, 해결 방법은 매우 단순하다.
  • 리눅스 터미널에서 내가 사용하고 있는 리눅스 버전에 맞는 방법으로 설치하면 된다.
  • 예를 들어, 내가 CentOS를 사용하고 있다면, CentOS용인 rpm을 이용하여 설치하면 된다.
  • 구체적인 해결 방법은 다음과 같다.
  • 리눅스 터미널 > yum install mysql-devel 입력 및 설치 > RStudio에서 패키지 설치 재실시

 

 

지금까지 R의 패키지에 대해 학습해보았다. 패키지는 설치에서 간간히 문제가 발생할 수는 있지만, 그 방법이 생각보다 단순하고, 패키지 관련 함수들도 install.packages()나 library() 같은 일부 함수를 제외하곤 거의 쓰이지 않기 때문에, 몇 번 쓰다보면 금새 익숙해질 것이다.

물론 몇몇 패키지를 설치하다가 오류가 나면 엄청 스트레스를 받긴 하겠지만, 그러한 문제 하나하나를 해결해나가다 보면, 어느새 실력이 부쩍 올라간 나 자신을 볼 수 있을 것이다.

이번 포스트는 여기서 마치도록 하겠다. 다음 포스트에선 R을 사용하는 데이터 분석가라면 거의 필수적으로 공부해야하는 패키지인 dplyr에 대해 공부해보도록 하자.

728x90
반응형

+ Recent posts