1 R 패키지 설치하고 불러오기

if (! ("devtools" %in% rownames(installed.packages()))) 
  { install.packages("devtools") }
base::require("devtools")
if (! ("roxygen2" %in% rownames(installed.packages()))) 
  { install.packages("roxygen2") }
base::require("roxygen2")

2 R 패키지가 설치될 폴더 만들기

C:폴더에 패키지를 만든다. rpkgs 폴더는 사용자가 만든다. setwd("C:/rpkgs") 명령으로 작업 폴더를 설정한다.

패키지 이름은 kde이다. 이 패키지는 create("kde") 명령을 실행하면 C:/rpkgs/kde에 자동으로 만들어 진다.

setwd("C:/rpkgs")
create("kde")
## √ Creating 'kde/'
## √ Setting active project to 'C:/rpkgs/kde'
## √ Creating 'R/'
## √ Writing 'DESCRIPTION'
## Package: kde
## Title: What the Package Does (One Line, Title Case)
## Version: 0.0.0.9000
## Authors@R (parsed):
##     * First Last <first.last@example.com> [aut, cre] (YOUR-ORCID-ID)
## Description: What the package does (one paragraph).
## License: `use_mit_license()`, `use_gpl3_license()` or friends to pick a
##     license
## Encoding: UTF-8
## LazyData: true
## Roxygen: list(markdown = TRUE)
## RoxygenNote: 7.1.1
## √ Writing 'NAMESPACE'
## √ Writing 'kde.Rproj'
## √ Adding '^kde\\.Rproj$' to '.Rbuildignore'
## √ Adding '.Rproj.user' to '.gitignore'
## √ Adding '^\\.Rproj\\.user$' to '.Rbuildignore'
## √ Setting active project to '<no active project>'

3 소스파일 만들기

소스파일은 확장자가 .R로 끝난다. 다음은 소스파일 kde.R에 대한 내용이다. 이 파일 저장 위치는 c:/rsource 로 가정한다.

#' Kernel density estimation based on observation.
#'
#' This function generate pdf data for kernel density 
#' estimation. Kernel is simply the N(0,1).
#' @param x Setting of Domain for kernel density estimation
#' @param Xi Observation
#' @keywords kernel
#' @export
#' @examples
#' Xi <- c(3,4.5,5,8,9)
#' x <- seq(min(Xi)-3, max(Xi)+3,by=0.1)
#' sx <- seq(-3,3,by=0.1)
#' 
#' haty <- kde(x,Xi)
#' 
#' plot(x,haty,type="l",ylim=c(0,max(haty)))
#' for(i in 1:length(Xi)){
#'    lines(sx+Xi[i], dnorm(sx)/length(Xi),lty=2) 
#' }
kde <- function(x,Xi) {
  y = rep(0,length(x))
  for(i in 1:length(x)){
    for(j in 1:length(Xi)){
      y[i] = y[i]+dnorm(x[i]-Xi[j])/length(Xi)  
    }
  }
  haty=list(y)
  return(y)
}

소스파일에서 만든 함수는 커널 함수를 추정하는 것으로 \[ \hat{f}(x;h) = n^{-1} \displaystyle\sum_{i=1}^{n}K_h(x-X_i) \] 이다. 여기서 \(K_h(u) = h^{-1}K(u/h)\) 이고 \(K\) 커널 함수는 \(\int K(x) dx=1\)을 만족한다. 또한 \(h\)는 양수이며 광대역(bandwidth) 또는 창 너비(window width)로 부른다. 더불어 주석문에 쉼표를 같이 사용하면() 이 내용은 도움말 문서에 추가된다.

도움말 문서에 사용하는 옵션이다.
1. first sentence 첫 문장은 제목(title)
2. second paragraph 둘 째 문단은 함수에 대한 간단한 기술(description)
3. third paragraph] 세 번째 이후 문단은 함수에 대한 자세한 설명(details)
4. @param 함수에 사용하는 전달인자(parameter)
5. @examples 함수를 사용한 예제 스크립트
6. @keywords 키워드 설정

4 도움말 문서 파일 만들기

도움말 문서는 document 명령어로 만든다. 이 명령어 실행 결과 소스파일에 대한 도움말 문서는 패키지 설치 폴더 kde의 하위 폴더 man에 자동으로 만들어진다. 파일 이름은 소스에 사용한 함수이름과 도움말 문서 확장자 .Rd이다. 이 명령어를 실행하기 전에 소스파일은 패키지 설치 폴더 kde의 하위 폴더 R에 복사한다.

setwd("c:/rpkgs")
shell("cp c:/rsource/kde.R c:/rpkgs/kde/R")
document("kde/R")
## Updating kde documentation
## Loading kde
## Writing NAMESPACE
## Writing kde.Rd

5 만든 패키지 github에 올리기

  1. https://github.com 에 회원가입한다.
  2. 윈도우에서 사용할 GitHub Desktop를 설치하고 로그인한다.

2.1. GitHub Desktop에서 새 레포지토리를 추가 메뉴를 클릭한다.

2.2. GitHub Desktop에서 새로운 레포지토리를 추가한다. name는 추가할 패키지 이름 kde, Local path는 패키지가 설치될 폴더 C:/rpkgs를 설정한다.

2.3. https://github.com에 패키지를 추가하기 위하여 Publish repository를 누른다.

2.4. Name에 kde, Keep this code private에 체크표시 해제, Publish repository를 누른다.

2.5. https://github.com 에서 추가한 패키지를 확인한다.