Stats & AI tech blog - '일단 시도함'

[R] R에서 라이브러리 (패키지) 만들기 본문

Programming/R

[R] R에서 라이브러리 (패키지) 만들기

justdoit ok? 2024. 7. 9. 16:04

오늘은 R에서 내가 만든 함수를 모아 라이브러리(패키지)를 만들어 보려고 한다.

자주 쓰는 함수를 모아 놓고 편하게 쓸 수 있을 것 같다.

 

라이브러리(패키지)를 만드는 순서는 아래와 같다. 

1. 패키지 구조 생성

2. 패키지 메타데이터 생성

3. 함수 파일, 도움말 문서 작성

4. 패키지 빌드 및 설치

 

 

1. 패키지 구조 생성

먼저 패키지를 저장할 디렉토리와 그 안에 필요한 메타 데이터를 생성해야한다.

'usethis' 패키지를 사용하면 구조를 자동으로 생성할 수 있다.

install.packages("usethis")
library(usethis)

# 패키지 구조 생성
create_package("path/to/your/package")

 

위 코드를 실행하면 지정된 경로에 폴더(나는 이름을 zim으로 생성)가 생성되고 안에 DESCRIPTION, NAMESPACE 등 패키지 메타데이터도 함께 생성된 것을 확인할 수 있다.

 

 

 

2. 패키지 메타데이터 작성

위에서 자동으로 생성된 DESCRIPTION파일과 NAMESPACE파일을 열어서 수정해준다.

그냥 내가 필요한 정보를 추가해주면 된다.

 

 

3. 함수 파일, 도움말 문서 작성

위에서 create_package를 실행했을 때, R프로젝트 새 창이 떴을 것이다.

새로운 프로젝트 창에서 함수에 대한 스크립트를 작성해주면 된다.

 

나는 baseline_table을 원하는 형태로 만들어주는 함수를 추가해 줬는데, 내용은 신경쓰지 않아도 된다.

스크립트 상단에 @param, @return, @export 내용으로 함수 설명에 대한 Roxygen2 주석을 추가해준다.

#' A sample function
#'
#' This is a simple example function.
#'
#' @param df A data frame containing the data.
#' @param dependent A string specifying the dependent variable.
#' @param mean_p Logical, whether to include p-values for means.
#' @param median_p Logical, whether to include p-values for medians.
#' @param cat_parm Logical, whether to use chi-square test for categorical variables.
#' @return A data frame containing the baseline table.
#' @export

baseline_table <- function(df, dependent, mean_p = F, median_p = T, cat_parm = F){

  col_list <- colnames(df)
  explanatory = col_list[col_list != dependent]
  dependent = dependent

 ...

  # Result
  result <- bind_rows(cat.values, mm) %>%
    arrange(index) %>%
    mutate(p = ifelse(is.na(p), '', p),
           test = ifelse(p == '', '', test)) %>%
    select(-index)

  return(result)
}

 

함수와 도움말 주석을 작성했다면, 아래 콘솔창에서 devtools::document()를 실행해준다.

실행 후에 man폴더 안에 .Rd파일이 생성된 것을 확인할 수 있다.

# Roxygen2 문서 생성
document()

 

4. 패키지 빌드 및 설치

여기까지 패키지를 만들었다면, 이제 패키지를 빌드하고 설치하면 된다.

동일하게 콘솔창에서 아래 코드를 실행해준다.

# 패키지 빌드
build()

# 패키지 설치
install()

 

 

위 작업을 모두 수행했다면, library(패키지명)으로 내가 만든 라이브러리(패키지)를 불러와 사용할 수 있다.

라이브러리(패키지)가 저장된 경로는 .libPaths()로 확인 가능하다.

 

 

'Programming > R' 카테고리의 다른 글

[R] Loop function for Univariable Logistic Regression  (0) 2024.11.08
[R] R에서 변수 동적 처리  (0) 2024.07.12
[R] Caret Package로 모델 학습 및 튜닝하기  (0) 2024.05.29
[R] EDA with ggplot2  (0) 2024.02.27
[R] K-Means Clustering  (0) 2024.02.26