roxygen 이용한 R Package 문서 생성


RStudio에서 패키지 개발하는 방법입니다. roxygen 패키지는 LaTex문서 생성를 쉽계 하며, R 패키지에서 요규하는 문서를 쉽게 작성할 수 있다. roxygen 툴은 한글 지원에 문제가 있다.
이 문서는 RStudio 에서 패키지 개발 게시글의 연속이다.

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

devtools, roxygen2 패키지가 설치되어 있다야 한다
패키지 설치: 
install.packages("devtools")
install.packages("roxygen2")

패키지 로드
libarary(devtools)
install.packages(roxygen2)

  1.  함수 위에 아래와 같이 타이핑한다
    #' Sqaure a number
    #' 
    #' Takes in any numeric value and squares it.
    #' @param x A numeric value to be squared
    #' @return T square of the input
    #' @export
    square <- function(x){
        return (x^2)
    }
    

    태그설명
    #' roxygen 문서를 의미한다.
    첫줄 ~ 셋째 줄 첫줄: 함수 명, @title 과 같음
    셋째 줄 : 함수 설명, @description 같음
    @param 함수의 파라메터를 설명
    @return 함수의 리턴값을 설명
    @export 이 태그를 사용하면 배포된 패키지가 로드되었을 때 패키지 태그 없이 바로 함수명으로 접근 가능하다
    mypkg::square(), square()으로 사용 가능

  2. CTRL+SHIFT+D 단축키를 사용하여 문서를 생성한다.
  3. 문서 생성이 성공적이면 아래 그림과 같이 우측하단의 FILES TAB에서 ./mypkg/man 디렉토리에 square.rd 파일이 생긴다.
    문서 생성이 성공적인 경우 rd 파일 생김
  4. square.rd 파일을 열어 보면 아래와 같은 내용을 볼 수 있다
    % Generated by roxygen2: do not edit by hand
    % Please edit documentation in R/square.R
    \name{square}
    \alias{square}
    \title{Sqaure a number}
    \usage{
    square(x)
    }
    \arguments{
    \item{x}{A numeric value to be squared}
    }
    \value{
    T square of the input
    }
    \description{
    Takes in any numeric value and squares it.
    }
    
  5. rd 파일을 열고, 툴바에서 미리보기 아이콘을 실행하거나, 메뉴에서 Build and Reload(CTRL+SHIFT+B) 실행하고, 우측하단의 Packages TAB에서 빌드된 패키지를 클릭하면 문서 내용을 확인 할 수 있다.
    rd 내용 보기
앞에서 언급한 roxygen 툴은 한글 지원에 문제가 있다. rd 파일에도 한글이 있으면 DOCUMENT 미리보기 화면에서 한글이 깨져 보인다.
아래와 같이 한글이 코드에 한글이 있으면 DOCUMENT를 생성 할 때 에러가 발행한다. 
#' Sqaure a number
#' 
#' Takes in any numeric value and squares it.
#' @param x A numeric value to be squared
#' @return 입력 값을 보여 줍니다.               <= 에러가 발생
#' @export
getMessage <- function(x){
    return (cat(3, "을 입력했습니다."))         <= 에러가 발생, 위의 return 구문에 한글이 없어도 에러 발생
}

댓글 없음:

댓글 쓰기