Nice programing

동일한 R 패키지의 여러 버전을 어떻게 사용합니까?

nicepro 2020. 12. 25. 22:56
반응형

동일한 R 패키지의 여러 버전을 어떻게 사용합니까?


두 버전의 패키지를 비교할 수 있으려면로드 할 패키지의 버전을 선택할 수 있어야합니다. R의 패키지 시스템은 기본적으로 기존 패키지를 덮어 쓰도록 설정되어 있으므로 항상 최신 버전을 사용할 수 있습니다. 이 동작을 어떻게 재정의합니까?

지금까지 내 생각은 다음과 같습니다.

패키지 소스를 가져 와서 설명을 편집하여 다른 이름을 부여하고 사실상 두 개의 다른 패키지를 빌드 할 수 있습니다. 훨씬 덜 번거롭기 때문에 바이너리로 직접 작업 할 수 있기를 바랍니다.

두 버전의 패키지를 동시에로드 할 필요는 없습니다 (동시에 어딘가에 설치됨). 나는 약 아마도 엉망이 수 Sys.getenv('R_HOME')후 R이 패키지를 설치 장소를 변경하는 .libpaths()그들을 위해 어디 R의 외모 장소를 변경할 수 있습니다. 그래도 이건 엉망인 것 같네요. 그럼 누구에게 더 좋은 아이디어가 있나요?


라이브러리 경로를 선택적으로 변경할 수 있습니다. 완전한 투명성을 위해 두 가지 모두 평소의 경로에서 벗어나십시오.

 library(foo, lib.loc="~/dev/foo/v1")    ## loads v1

 library(foo, lib.loc="~/dev/foo/v2")    ## loads v2

install.packages()물론 동일하게 작동합니다 . 이러한 모든 명령에는 여러 인수가 있으므로 원하는 후크가 이미있을 수 있습니다. 따라서 변경하는 것을 보지 R_HOME말고 help(install.packages)(소스에서 설치한다고 가정)보십시오.

그러나 AFAIK는 동일한 이름으로 동일한 패키지를 두 번로드 할 수 없습니다.


물론 여전히 유효한 대답이 받아 들여진 지 수년이 지났습니다. 그러나 그 동안 발생한 몇 가지 새로운 옵션을 언급하는 것이 좋습니다.

여러 버전의 패키지 관리

프로젝트 (디렉토리) 수준에서 여러 버전의 패키지를 관리하는 경우 packrat도구가 유용 할 수 있습니다 : https://rstudio.github.io/packrat/ . 간단히 말해서

Packrat는 다른 모든 R 세션에서 공유되는 개인 R 라이브러리에 의존하지 않고 패키지 종속성을 내부에 저장하여 프로젝트 디렉터리를 향상시킵니다.

이것은 기본적으로 각 프로젝트가 사용자 및 시스템 라이브러리와 분리 된 자체 "개인 라이브러리"를 가질 수 있음을 의미합니다. RStudio를 사용하는 경우 packrat매우 깔끔하게 통합되고 사용하기 쉽습니다.

사용자 정의 패키지 버전 설치

패키지의 사용자 지정 버전을 설치하는 데에는 여러 가지 방법이 있습니다. 아마도 가장 편리한 방법은 devtools 패키지를 사용하는 것입니다 . 예 :

devtools::install_version("ggplot2", version = "0.9.1")

또는 Richie가 제안한대로 devtools를 더 작은 패키지로 분해 한 결과 인 remotes 라는 더 가벼운 패키지 가 있습니다.

remotes::install_version("ggplot2", version = "0.9.1")

주제에 대한 자세한 정보는 다음에서 찾을 수 있습니다.

참조 URL : https://stackoverflow.com/questions/2988559/how-do-you-use-multiple-versions-of-the-same-r-package

반응형