언제까지 R의 기본 함수만 사용할 수 없다. 기본 기능 이외에도 새로운 알고리즘을 사용하거나, 다른 언어를 끌어와서 사용하거나, 이쁜 그래프를 그리고 싶다면 패키지(Package)를 사용할줄 알아야 한다. 패키지를 모른다면 R 기능의 1%도 못쓸테니 꼭 알아두자.
개요
R이 강력한 이유 중 하나는 바로 패키지 때문이다. 15000개가 넘는 공식 패키지가 등록되어있으며 cran에서 다운받을 수 있다. 하나의 패키지는 적게는 1개, 많게는 100여개의 함수를 들고 있기 때문에
패키지 종류
개수가 많은 만큼 그 종류도 다양하다. 파일 입출력, 데이터 전처리, 그래프, 통계/머신러닝 알고리즘 등 분류 기준을 잡기도 어려울 정도로 많다.
본인이 사용하고자 하는 함수/동작/목적을 영어 단어를 검색엔진에 몇 자 적으면 관련 예제코드를 볼 수 있고, 코드 상단에 사용한 패키지를 불러오기 위한 library()
함수가 배치되어 있는 경우가 대부분이니 그것을 참고하면 되겠다.
패키지 설치
인터넷이 연결되어 있는 경우
반드시 따옴표를 사용하여 텍스트로 입력을 하도록 한다.
1 | install.packages(beepr) # 1 |
이 부분은 표준평가(standard evaluation)와 비표준평가(nonstandard evalustion)과 관련이 있으니 보다 자세한 내용을 알고자 하는 분은 관련 문서를 보도록 하자.
아무튼 좌우에 따옴표를 사용해서 문자를 쓰는 것은 어떤 의미가 있을까?
1 | listt = c("abc", "abd") |
문자로 입력하지 않으면 객체로 인식해서 원하는 패키지를 설치하지 못하는 경우가 생긴다. 그래서 어떤 상황에서도 에러없이 패키지를 설치하려면 따옴표를 사용하여 패키지명을 문자로 전달하도록 하자.
인터넷이 연결되어 있지 않은 경우
이것은 인터넷이 연결되어있더라도 직접 압축파일을 다운로드 받은 후 설치하는 것과 같다. 그리고 본인이 사용하고 있는 PC가 인터넷에 연결되어있지 않다고 해도 반드시 인터넷이 연결되는 별도의 PC가 필요하다.
우선 cran에서 패키지를 다운로드 받아야 하면 절차는 다음과 같다.
본인의 운영체제에 맞는 패키지를 다운로드 받은 후 다음의 코드를 입력하면 된다.
1 | install.packages("A3_1.0.0.zip", repos = NULL, type = "source") |
하지만 의존 패키지 까지 다운로드 하기가 좀 번거롭다. 해당 부분은 패키지 문제 해결에서 다룰 예정이다.
공식 패키지가 아닌 경우
공식 패키지가 아닌 경우 cran에서 다운로드 받을 수 없다. 보통 패키지 배포는 비공식 패키지일 경우 devtools 또는 remotes 패키지를 통해서 바로 깃허브(Github)에 업로드 되어있는 패키지를 쉽게 다운로드하고 설치할 수 있다.
1 | devtools::install_github() |
의존 패키지
패키지를 설치하면 하나만 설치되는 것이 아니라 여러 패키지가 순차적으로 설치되는 것을 볼 수 있다. 이 때 설치되는 패키지를 의존(dependency) 패키지라고 한다. 대표적으로 앞에서 알아본 beepr 패키지를 설치하면 다음과 같은 화면을 볼 수 있다(환경마다 다를 수 있음).
밑줄 그어진 부분을 보면 beepr 패키지를 설치하면서 audio 패키지도 같이 설치된다는 메세지가 적혀있는 것을 알 수 있다.
패키지 사용
패키지 전체 불러오기
패키지를 불러오는 것은 기본 library()
함수를 사용한다. 앞의 install.packages()
함수는 따옴표를 써서 패키지명을 선언하는 것이 좋다고 했으나 여기서는 굳이 그럴 필요는 없다. 하지만 필자는 따옴표를 꼭 쓰는 편이다.
1 | library(beepr) # 1 |
어떤 패키지는 빨간 메세지를 출력하는데 보통 안내메세지라 당황할 필요 없다.
1 | library("data.table") |
그리고 간혹 가다 알록달록한 메세지를 띄워주는 패키지도 있다.
1 | library("tidyverse") |
특정 함수만 불러오기
R에는 패키지도 많고 각 패키지의 함수도 많다 보니 함수명이 같은 경우가 종종 생긴다. 하지만 코드를 작성하다가 A패키지를 불러올 수도 있고, B패키지를 불러올 수도 있는데 각 패키지에 abc()
라는 함수가 존재하면 어떻게 해야할까? 원하는 패키지의 원하는 함수를 정확하게 지정하여 사용할 수 없을까?
1 | data.table::fread() |
위와 같이 앞에 패키지명을 쓴 다음 콜론(:) 2개를 쓰고 해당 패키지의 함수를 이서서 써주면 해당 함수를 사용할 수 있다. 하지만 이 방법은 간혹 RStudio의 자동완성 지원이 잘 되지 않으니 참고하도록 하자.
패키지 개발
직접 패키지를 만들 수 있으며 RStudio 에서 그 기능을 지원한다. 최초 시작은 다음과 같다.
RStudio의 우측 상단 프로젝트 아이콘을 클릭하면 새 팝업창이 등장한다.
원하는 버튼 클릭 후 패키지 생성 버튼을 누른다. 특수한 패키지 생성이 필요한 경우 아래쪽 버튼을 살펴보자.
여기까지 설정하면 다음과 같은 화면을 볼 수 있다.
보다 자세한 내용은 패키지 제작부분에서 다루고자 한다.
패키지 전반적인 내용 이외에도 R의 다양한 패키지 소개는 R) 패키지 시리즈에서 확인 할 수 있다.
<R 입문 시리즈>
R) R을 R려줘!
R) R 설치
R) RStudio 사용
R) 도움말 사용하기
R) 원소의 이해
R) 연산자의 이해
R) 함수 사용하기
R) 패키지 시리즈
R) 객체 시리즈
R) 파일 입출력 시리즈