[R] 패키지의 이해

[R] 패키지의 이해

패키지란 R이 제공하지 않는 기능을 구현해 놓은 일종의 확장팩을 말합니다. 온라인에 등록되어 있는 패키지를 다운로드 받아 설치하고 그 패키지에 포함된 기능들을 로드해서 사용할 수 있으며 대부분의 데이터 분석, 시각화 관련 기능은 패키지를 통해 제공됩니다.

#01. 패키지 설치 방법

1) R 공인 패키지

CRAN (the Comprehensive R Archive Network)에 등록되어 있는 R 공식 패키지를 말한다.

CRAN은 등록 승인 절차가 엄격하기로 유명하며 패키지 다운로드를 위해 국가별로 서버가 존재한다.

https://cran.r-project.org/mirrors.html에서 서버 주소 확인 가능

한국서버 주소들

패키지 설치 방법

r소스코드에서 아래의 구문을 실행한다.

repos값은 생략 가능하지만 생략할 경우 미국 서버에서 다운로드 받기 때문에 속도가 매우 느리다.

# 패키지가 존재하지 않는다면 설치하기 (중복설치를 피함)
if (!require(패키지이름)) {
    install.packages("패키지이름", [repos=서버주소])
}

2) 비공인된 패키지

CRAN에 등록되지 않은 비공식 패키지.

검증되지 않은 기능들이지만 유명한 기능들은 검증되었다고 봐도 무관하다.

패키지 설치 방법

r소스코드에서 아래의 구문을 실행한다.

단, 비공인 패키지를 설치하기 위해서는 devtools라는 이름의 공인 패키지가 설치되어 있어야 한다.

devtools::install_github("패키지이름")

3) 설치된 패키지 사용하기

설치가 완료된 패키지는 아래의 구문으로 로딩할 수 있다. 로딩된 패키지는 현재 세션(작성중인 jupyter 파일) 내에서 유효하다.

패키지 안에는 이미 구현되어진 수많은 함수들이 내장되어 있기 때문에 패키지 안에 포함되어 있는 함수들에 대한 사용법을 숙지해야 한다.

library("패키지이름")

#02. 파일 입출력 관련 패키지 사용하기

R에서의 텍스트 파일 저장기능은 자체적인 내장함수로 제공하지만 텍스트 파일의 내용을 가공 없이 읽어들이는 기능은 다소 번거롭기 때문에 외부 패키지를 통해 구현하는 것이 더 간편하다.

1) 텍스트 파일에 내용 저장하기 (내장함수 사용)

현재 작업 폴더에 foo.txt파일을 생성하고 내용 기록하기

file() 함수를 사용하여 파일을 저장할 수 있는 객체를 반환받고, writeLines() 함수에게 기록할 내용과 반환 받은 객체를 전달한다.

# 저장할 파일 지정 - 기존에 내용이 있을 경우 삭제 후 새로 저장함
f <- file("foo.txt", encoding="UTF-8")

# 한 줄 저장하기
writeLines("안녕하세요. 반갑습니다.", f)

# 지정된 파일 닫기
close(f)

별도의 출력 결과 없음. (생성된 foo.txt 파일 확인)

현재 작업 폴더에 bar.txt파일을 생성하고 여러 줄 기록하기

한 번에 여러 줄을 기록할 경우 기록할 내용들을 벡터로 묶어서 전달한다.

# 저장할 파일 지정 - 기존에 내용이 있을 경우 삭제 후 새로 저장함
f <- file("bar.txt", encoding="UTF-8")

# 여러 줄을 한번에 저장할 경우 저장할 내용을 벡터로 설정
source <- c("Hello Bigdata", "헬로 Bigdata", "Hello 빅데이터")
writeLines(source, f)

# 지정된 파일 닫기
close(f)

별도의 출력 결과 없음. (생성된 bar.txt 파일 확인)

2) 파일읽기 - readr 패키지 사용하기

readr 패키지는 데이터사이언스를 위해 구성된 Tidyverse 라는 패키지 중 하나로서 csv 나 tsv, fwf 같은 격자형의 데이터를 쉽고 편하게 읽기 위해 만들어졌다.

readr 패키지 설치하기

jupyter를 통한 최초 설치시 설치 과정이 출력된다.

# CRAN 서버 주소 지정 (한국)
REPO_URL <- "https://cran.seoul.go.kr/"

# 패키지가 존재하지 않는다면 설치하기 (중복설치를 피함)
if (!require("tidyverse")) install.packages("tidyverse", repo=REPO_URL)

# 패키지 로드하기
library("readr")

💻 출력결과

Loading required package: tidyverse

-- Attaching packages ----------------------------------------- tidyverse 1.3.0 --

 ggplot2 3.3.3      dplyr   1.0.4
 tibble  3.0.6      stringr 1.4.0
 tidyr   1.1.2      forcats 0.5.1
 purrr   0.3.4     

-- Conflicts ---------------------------------------------- tidyverse_conflicts() --
x dplyr::filter() masks stats::filter()
x dplyr::lag()    masks stats::lag()

foo.txt 파일의 내용을 mystring 이라는 변수에 저장하기

  • read_file() 함수에게 읽어올 파일의 경로를 지정하면 그 내용을 반환한다.
  • 읽어온 내용에 줄바꿈 문자가 포함 되어 있는 경우 \r\n으로 표기된다.
mystring <- read_file("foo.txt")
print(mystring)

💻 출력결과

[1] "안녕하세요. 반갑습니다.\r\n"

bar.txt 파일의 내용을 mystring 이라는 변수에 저장하기

mystring <- read_file("bar.txt")
print(mystring)

💻 출력결과

[1] "Hello Bigdata\r\n헬로 Bigdata\r\nHello 빅데이터\r\n"
호쌤(이광호)'s Picture

About 호쌤(이광호)

메가스터디IT아카데미에서 Java, Spring, Python, Frontend 등을 강의하는 IT 전문 강사이자 프리렌서 개발자 입니다.
https://www.youtube.com/@hossam-codingclub

Seoul, Korea http://www.hossam.kr