Skip to content

R (프로그래밍 언어) Package Installation Problem #

Find similar titles

6회 업데이트 됨.

Edit

Structured data

Category
Programming

개요 #

일반적으로 통계 분석을 할 때, R program을 많이 사용한다. R은 다양한 package를 가지고 있으며, 사용자가 원하는 그림을 만들 수도 있고, 무엇보다 Open source이므로 무료로 사용이 가능하다는 장점이 있다. 그럼에도 불구하고 package를 설치할 때, 간혹 발생되는 에러가 있다. 지금까지 사용하면서 4번 정도 같은 에러를 만났음에도 불구하고 명확한 해결책을 찾지 못했다. 이에 따라 이 글을 보고 人Co인 뿐만 아니라 많은 분들에게도 조금이나마 도움이 되고자 한다.

Package 설치 방법 #

보통 2가지 방법을 많이 이용한다.

1.install.packages()

> install.packages("원하는 package 명")

2.biocLite

> source("https://www.bioconductor.org/biocLite.R")
>  biocLite("원하는 package 명")

Path Error 발생 #

위와 같이 설치를 했음에도 다음과 같은 에러가 발생하곤 한다.

Image

가장 많이 볼 수 있는 메시지는

installation of package '~~~' had non-zero exit status

'lib = "C:/~~~/R/R-3.1.2/library"' is not writable

이는 Path 경로가 원활하지 않음으로 인해 발생하는 것인데, > .libPaths()로 확인하고 lib를 직접 설정도 하는 등 구글을 통해서도 명쾌하게 해결하지는 못했다. 위 Warning Message를 보면 "C:/Program Files/R/R-3.3.2/bin/x64/R"의 path를 통해 running을 진행하는데, Program Files의 폴더 명에 공백이 있어서 인식을 못하는 것 같다.

해결책 #

R program을 설치할 때, 기본적으로 'Program Files'의 폴더 아래에 R이 설치된다. 아래와 같이 C: 바로 아래에 R을 설치하면 이와 같은 에러가 해결이 된다.

Image

아마 이와 같은 에러를 경험해 본 유저들이 많을텐데 이 방법을 통해 잘 해결하여 향후 분석을 하는데 도움이 되었으면 한다.

Package 설치의 또다른 문제 #

R이 다양한 패키지를 제공하면서 매우 유용한 통계 분석 도구로 자리매김하였지만, 다양한 패키지만큼 패키지 간의 버전 차이와 의존성 문제 때문에 처음에 설치할 때, 그리고 중간에 버전을 업데이트할 때 패키지 문제로 어려움을 겪는 경우가 많다.

Package 버전 관련 문제 #

R 본 프로그램의 버전에 따라 패키지 설치가 되지 않는 경우가 있는데, 이 경우에는 크게 세가지 해결책이 있다.

R 본 프로그램의 버전을 낮추기 #

이전에 나온 패키지들과의 호환성을 유지하려면 본 프로그램의 버전을 낮춰서 사용하는 것도 방법이 될 수 있다. R의 이전 버전은 아래의 링크에서 다운로드 할 수 있다.

Image https://cran.r-project.org/bin/windows/base/old/

force 옵션을 이용하기 #

버전 때문에 설치되지 않는 패키지를 강제로 설치할 수 있는 방법이 있는데, 인스톨 시 force=TRUE를 설정해주면 된다.

예시: install.packages("magrittr", force="TRUE")

대체 패키지를 설치하기 #

R이 워낙 많은 패키지를 제공하다보니 비슷한 기능을 하는 대체 패키지가 존재하는 경우도 있다. 이렇게 대체 패키지가 있는 경우라면 대체 패키지를 설치해서 사용하는 것도 방법이 될 수 있다.

예시: magrittr 패키지가 버전 문제 때문에 설치되지 않을 경우
     dply 패키지를 설치

Package 의존성 문제 #

다른 컴퓨터 언어도 마찬가지이지만, R의 경우에도 패키지들간에 의존성을 가지고 있는 경우가 있다. 여기서 의존성이란, 하나의 패키지가 실행되기 위해서 다른 패키지가 필요한 경우를 의미한다. 패키지를 제작할 때 기존의 패키지를 부분적으로 활용해서 기능을 하도록 만드는 경우가 많기 때문에 이러한 경우가 발생한다.

Image

위 그림은 R 주요 패키지의 의존성 관계를 묘사한 그래프로, 윗부분의 주황색으로 표시된 plyr 패키지는 주변의 scales, reshape, ggplot2 등의 패키지가 의존성을 가지고 있는 경우에 해당된다. 즉, scales, reshapre, ggplot2 등의 패키지가 설치/동작하기 위해서는 plyr 패키지가 먼저 설치되어 있어야 한다.

Package 의존성을 확인하는 방법 #

available.packages()명령을 이용하면 현재 사용가능한 패키지에 대한 정보를 확인할 수 있으며, 이 명령의 결과를 변수에 넣고 특정 패키지를 항목값으로 입력하면 해당 패키지에 대한 의존성 상세 정보를 확인할 수 있다.

Image

위 예시의 경우 ggraph 패키지는 ggplot2에 대해 의존성이 있고(depends) dplyr과 ggforce 등의 패키지를 import하여 사용한다는 것을 할 수 있다.

의존성이 있는 패키지의 다운로드 #

패키지에 따라서 의존성이 있는 패키지를 자동으로 포함해서 설치하는 경우도 있으나 보통 단독으로 설치가 되기 때문에 의존성이 있는 패키지가 필요할 때 추가로 받는 방법이 가장 기본적인 방법이라고 할 수 있다. 그렇지만 의존성 있는 패키지를 자동으로 함께 설치하고 싶다면 위의 의존성 확인 방법을 응용한 함수를 만들고 이를 이용하여 자동설치를 수행하면 된다.

> rootDir <- "/temp"
> dir <- "packages"
> dir.create(file.path(rootDir, dir))

getPackages <- function(packs){
    packages <- unlist(
        tools::package_dependencies(packs, available.packages(),
            which=c("Depends", "Imports"), recursive=TRUE)
    )
    packages <- union(packs, packages)

    return(packages)
}

위처럼 의존성 패키지를 같이 설치하는 함수를 만든 다음, 아래 명령을 통해 실행

packages <- getPackages(c("dplyr", "ggplot2"))
download.packages(packages, destdir = file.path(rootDir, dir))

기타 문제 #

버전에도 문제가 없고, 의존성 문제도 없는데 패키지 설치가 되지 않는다면 패키지 리포지토리(저장소) 설정과 연관된 문제일 수도 있다. 이 경우에는 아래와 같이 repos 옵션을 설정하여 패키지를 설치할 수 있다.

install.packages("corrgram", repos="http://cran.us.r-project.org")

Suggested Pages #

0.0.1_20230725_7_v68