RStudio 에서 패키지 개발

RStudio에서 패키지 개발하는 방법입니다. devtools와 roxygen 패키지를 사용하여 R 패키지를 개발하는 방법을 보여줍니다. roxygen 를 사용해서 문서를 생성하는 방식은 한글 지원에 문제가 있습니다.

OS: Window 7
RStudio Version: 0.99.893
R Version: R x64 3.2.3


  1. RStudio에서 패키지를 개발할 새 프로젝트를 생성합니다.
    프로젝트 명을 MyPkg로 생성합니다.

  2. RStudio 에서 패지지 개발 툴인 패키지 툴을 설치합니다.
    • devtools 패키지 설치
      install.packages("devtools") 실행합니다.
      개발 패지지 소스를 컴파일하는 툴입니다.
    • roxygen2 패키지 설치
      install.packages("roxygen2") 실행합니다.
      :패키지 생성시  document  생성에 도움을 줍니다. 한글 지원에 문제가 있습니다.
  3. RStudio 한글 지원 설정
    메뉴에서 Tools >> Global Options... 를 클릭합니다.
    아래의 그림과 같이 Save TAB에서 Default Text Encoding 을 UTF-8로 설정합니다.
    Default Text Encoding 설정
  4. devtools 개발중인 패키지 소스를 컴파일 할 때 사용할 옵션을 설정합니다.
    • 메뉴에서 Build >> Configure Build Tool 클릭
      Pacakge Directory에 mypkg 도 입력해야 합니다.
      devtools 옵션 설정

      Roxygen 설정
  5. 새 스크립트 창을 생성하고 샘플 함수를 작성하고 실행합니다
    square <- function(x){
         return (x^2)
    }

  6. package.skeleton() 함수를 이용하여 패키지를 생성합니다.
    package.skeleton(list="square", name = "mypkg") 실행
    성공 시 우측 하단  TAB에 mypkg 디렉토리 보임
       
  7. mypkg 아래 MANUAL 파일들을 수정합니다.
    • DESCRIPTION 파일을 열어 수정 예)
      Package: mypkg
      Type: Package
      Title: A package I made 
      Version: 1.0 
      Date: 2016-03-25 
      Author: seung-bong lee 
      Maintainer: seung-bong lee 
      Description: This is a sample package 
      License: GPL2 
      
    • mypkg/man 디렉토리에서 mypkg-package.Rd 파일을 열어 수정합니다.
      예)
      \name{mypkg-package}
      \alias{mypkg-package}
      \alias{mypkg} 
      \docType{package} 
      \title{ 
        Sample Test package 
      } 
      \description{ 
        Add together two numbers 
      } 
      \details{ 
        The DESCRIPTION file: 
        NONE 
      } 
      \author{ 
       bongiiya 
       Maintainer: bongiiya 
      } 
      \references{ 
        cran 
      }
      \keyword{ power } 
      \seealso{ 
      devtools, roxygen2 packages 
      } 
      \examples{ 
      
      } 
      
      
    • square.Rd 파일은 Build 시 자동 삭제 됩니다.
  8. 패키지 설정 화면에서 패키지 디렉토리 지정.
    상단 4번 설정 영역 그림 참조
  9. devtools, roxygen2 패키지를 로딩합니다.
    • library(devtools)
    • library(roxygen2)
    위 2개의 명령어를 실행합니다.
  10. devtools::load_all("mypkg") 실행(CTRL + SHIFT + L 단축키 실행)
    • 성공적이면 Console 창에 아래와 같이 출력 됨
      > devtools::load_all("mypkg")
      Loading mypkg
    • mypkg::square(2) 를 입력하여 테스트 함수를 실행 해 봄
      > mypkg::square(2)
      [1] 4
  11. Boulid Source Package 실행합니다.
    • 우측 상단의 영역의 툴바에서 아래 그림과 같이 클릭하여 실행합니다. 
    • 에러가 발생하고 엔코딩 문제로 인해 콘솔의 글자가 깨져 보입니다.
  12. 엔코딩 문제 해결
    • Sys.setenv(LANG = "en_US.UTF-8")
      Build 수행시 에러 메세지가 깨지는 문제를 해결합니다.
  13. Boulid Source Package 다시 실행합니다.
    성공하면 아래 그림과 같이  Working Directory에 패키지 배포용 zip파일일 생성됩니다.
    mypkg gz 파일생성
  14. 함수 내에 한글이 있는 경우 테스트 합니다.
    mypkg/R/square.R 파일을 열어
    아래의 샢믈 코들을 입력한다.

    getMessage <- function(x){
         return (cat(3, "을 입력했습니다."))
    }
  15. Boulid Source Package 실행합니다.
    함수 내에 한글이 있는 경우도 성공적으로 빌드됩니다.
    엔코딩 에러가 발생한면
    엔코딩 에러가 발생한면 Sys.setlocale("LC_ALL") 실행하여 엔코딩을 변경해 본다.
패키지 개발을 하는 동안 엔코딩 문제가 발생하여 해결책을 찾는데 많은 시간이 걸렸습니다. roxygen2을 사용하여 문서를 생성할 때에도 엔코딩 문제는 계속 발생합니다.

댓글 없음:

댓글 쓰기