Search

2018년 3월 8일 목요일

[Analysis] [R] (offline R 분석 시) CRAN Repository에 있는 모든 패키지 설치하기

일을 하다 보면 인터넷 연결이 되어 있지 않은 환경에서 R 분석 작업을 진행해야 하는 경우가 있다.
다른 환경도 인터넷 연결 없이 진행하기 힘들겠지만, R은 특히 패키지 의존성이 강하기 때문에 offline으로 작업할 경우 매번 필요한 패키지를 설치하기 어려워 분석을 지속적으로 진행하기 어려운 경우가 생긴다.
보통 필수적으로 필요로 하는 패키지 위주로 개별적으로 다운을 받아서 옮기는 작업을 하는데, 이러다 보면 일부 dependency 패키지가 설치되어 있지 않아서 다시 다운받고 옮기는 작업을 반복하게 된다.
중간중간 패키지를 매번 새로 받아 옮기는 것보다 CRAN Repository에 있는 모든 패키지를 미리 다운받아서 설치하는 것이 편리한데, 이번 블로그에 그 내용을 담아보고자 한다.


1. CRAN Repository download

wget ftp://cran.r-project.org/pub/R/src/contrib/*.tar.gz

* 유효한 ftp 주소인지 확인해 보려면 .. (thanks to @김진혁)

ftp ftp://cran.r-project.org/pub/R/src/contrib/


2. Install on R

2-1. 압축 풀기

tar -xzvf /다운로드된경로 -C /압축풀경로


2-2. 압축푼경로로 R에서 라이브러리 경로지정

[Anaysis] [R] 현재 라이브러리 경로 확인 및 패키지 설치



2-3. 특정 패키지 설치여부 확인
(정말 필수적으로 필요한 패키지에 대해 샘플링하여 설치여부 확인)

pk.list <- c("RJDBC", "data.table", "dplyr", "tidyr", "Amelia" , "lubridate", "xlsx",
             "sparklyr", "rsparkling", "h2o", "visNetwork", "igraph", "ggplot2")
pk.installed <- installed.packages()[, "Package"]
setdiff(pk.list, pk.installed)
character(0)  # 모든 필수 라이브러리 설치 완료


* 대부분의 경우 이런 방식으로 리눅스 서버에서 설치 가능하지만 만약 설치가 안되는 경우가 있다면 다음 방법 참조

download.path <- "압축푼경로"
pk.list <- list.files(download.path)
pk.list <- setdiff(pk.list, installed.packages()[, "Package"])
for(i in pk.list){
  pk.path <- file.path(download.path, i)
  install.packages(pk.path, repos = NULL, type="source")
}

다만, 이 방법은 dependency 에 따라서 설치가 안되는 패키지가 있을 수 있으니, 여러번 반복수행하여야 한다.



댓글 없음:

댓글 쓰기