7  R package 기초

R의 핵심은 아주 작다. 그 핵심을 보통 base R이라고 부른다. R의 가장 큰 장점의 하나는 이 base R에 다양한 기능을 추가하여 사용할 수 있는 패키지(package)가 다양하다는 것이다.

이런 패키지는 R 사용자들이 개발하여 공유하는 것으로 CRAN 사이트를 통해서 배포된다. 오늘 기준 22,251개의 패키지가 등록되어 있다. 이것은 공식 등록된 숫자에 불과하다. 깃허브 등에는 더 많은 패키지들이 있다. 그리고 점점 더 많은 사람들이 패키지를 개발하여 공유한다.

7.1 (RStudio에서) 패키지 설치하고 사용하는 과정

처음에 베이스 R을 설치하고 어떤 패키지가 필요해졌다고 생각해 보자. 아래 패키지를 설치하고 사용하는 과정을 간단하다.

  1. 인터넷을 통해서 CRAN 등의 사이트에서 필요한 패키지를 다운로드한다.
  2. R 세션에서 그 패키지가 필요하면 로딩하여 사용한다.

7.1.1 패키지 설치

RStudio는 패키지를 설치 관리하는 창을 제공한다. “Packages”라는 창을 선택한다.

그림 7.1: Packages 창에서 Install 메뉴를 클릭한다.

RStudio는 패키지를 다운로드할 CRAN 사이트를 디폴트로 지정한다. “Install” 창에서 다운로드할 패키지 이름을 입력하면 자동으로 내 컴퓨터에 설치된다.1

그림 7.2: 보통 중간 빈칸에 다운로드할 패키지 이름을 입력하면 드롭다운 메뉴가 보인다. 해당 패키지를 선택하고, 아래 Install 버튼을 클릭한다.

어떤 R 패키지가 단독으로 개발되는 경우는 흔하지 않다. 오히려 다른 패키지를 의존하여 개발되는 경우도 많다. 그림 그림 7.2를 보면 아래에 Install dependencies가 디폴트로 체크되어 있다. 이런 경우은 그 의존하는 패키지도 함께 설치되기 때문에 굳이 신경쓸 필요는 없다.

7.1.2 패키지 사용

이렇게 다운로드된 패키지를 사용하고자 할 때는 library() 함수를 사용한다. 함수 안에 패키지 이름을 쓰면 된다. 따옴표로 붙여도 되고 붙이지 않아도 된다.

> library(gtsummary)

그리고 R 패키지들은 자주 업데이트된다. 그림 그림 7.1에서 “Update”를 클릭하면 CRAN에 등록된 패키지의 버전과 내 컴퓨터에 저장된 패키지의 버전을 서로 비교하여 업데이트가 필요한 패키지들을 자동으로 보여준다.

7.2 어떤 패키지를 사용할 것인가?

수많은 R 패키지들이 있는데 여기서 어떤 것을 사용해야 할지 모를 수 있다. 좋은 답은 아니겠지만 R을 공부하고 사용하다 보면 대체로 알게 된다. 모르면 검색이나 ChatGPT에게 질문해도 좋다.

7.3 이름 공간(namespace)

서로 다른 저자들이 cal_abc()라는 함수를 여러 개 만들어 R 패키지롤 올렸고, 이런 패키지를 몇 개 다운로등하여 사용한다고 생각해 보자.

이런 경우, library() 함수로 나중에 로딩한 패키지의 cal_abc() 함수가 이전에 로딩한 패키지의 cal_abc()를 덮어버린다.

R search() 함수는 R 인터프리터가 어떤 이름을 찾아가는 순서를 말해준다.

 [1] ".GlobalEnv"        "package:gtsummary" "package:dplyr"    
 [4] "package:ggplot2"   "package:stats"     "package:graphics" 
 [7] "package:grDevices" "package:utils"     "package:datasets" 
[10] "package:methods"   "Autoloads"         "package:base"     

이 순서를 보면 제일 먼저 .GlobalEnv가 오고 그 다음은 맨 마지막에 로딩된 패키지순으로 나열되어 있다.

7.4 이름 공간 연산자

A 패키지의 cal_abc()가 나중에 로딩된 B 패키지의 cal_abc() 함수에 의해 덮어진 경우에 ::를 사용하여 A::cal_abc()라는 문법을 사용하여 이 패키지의 cal_abc()를 사용할 수 있다.

7.5 패키지에는 어떤 것이 들어 있는가?

패키지에는 보통 특수한 목적에 맞게 개발된 R 함수들이 주로 들어 있다. 간간히 데이터셋만 제공하는 패키지도 있고, 많은 경우 데이터셋, R 함수들이 같이 포함되어 있다.

7.6 패키지 사용법을 익히는 방법

어떤 패키지의 사용법을 익히고자 할 때 가장 유용한 정보를 제공하는 문서가 비니에트(vignette)이다. 비니에트는 사용법을 전체적인 맥락에서 설명하는 문서이고, 많은 R 패키지 개발자들이 비니에트를 제공한다(이에 반해 R 도움말은 (영어) 사전과 같은 역할을 한다고 생각하면 된다).

찾는 방법은 간단하다. 그림 7.1에서 패키지 이름을 클릭한다. 이 경우엔 “gtsummary”를 클릭한다.

그림 7.3: 패키지 비니에트 읽기

위 그림에서 “User guides, package vignettes and other documentation.”을 클릭해서 읽는다.

또는 그림 7.3에서 “DESCRIPTION file”을 클릭한다. 그 안에 “URL” 항목이 있고, 여기에 개발 소스 코드가 있는 곳을 알려준다. 여기를 클릭한다. 대부분 코드를 공유하는 깃허브(GitHub) 사이트인 경우가 많다. 사이트를 가 보면 그림 7.4과 같이 오른쪽에 패키지 설명 사이트가 있는 경우가 많다. 여기도 배울 것이 많다.

그림 7.4: 깃허브 사이트

  1. 보통 .libPaths()라는 함수를 실행하여 컴퓨터에서 패키지가 저장된 곳을 찾을 수 있는데, 이것을 사용할 일은 거의 없을 것이기 때문에 무시해도 된다. 단, 지정된 위치에 저장된다는 것쯤은 알고 있자.↩︎