2010-06-07 4 views
37

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

내 생각은 지금까지 있습니다 :

내가 패키지 소스를 이용, 사실상 두 개의 서로 다른 패키지를 다른 이름을 부여하고 구축하기 위해 설명을 편집 할 수 있습니다. 차라리 덜 번거 롭기 때문에 바이너리로 직접 작업 할 수 있습니다.

동시에 두 버전의 패키지를 동시에로드 할 필요는 없습니다 (동시에 어딘가에 설치 했음). Sys.getenv('R_HOME')을 사용하여 R이 패키지를 설치하는 위치를 변경 한 다음 .libpaths()을 사용하여 R이 패키지를 찾는 위치를 변경할 수 있습니다. 이것은 해커처럼 보이지만 누구도 더 좋은 아이디어를 가지고 있습니까?

+2

'update.packages'의 도움을 받으려면 인수'installWithVers'가 필요합니다. 그것을 확인하려고 할 수도 있습니다 (또는 나중에 확인하고 답변으로 게시 할 것입니다.)). – Marek

+0

그리고이 스레드가 도움이 될 수 https://stat.ethz.ch/pipermail/r-help/2008-February/153580.html – Marek

+2

@Marek : 뉴스 파일에 따라, 버전을 설치합니다이 R2.9.0에서 사용되지 않는. http://cran.r-project.org/src/base/NEWS –

답변

33

라이브러리 경로를 선택적으로 변경할 수 있습니다. 완전한 투명성를 들어, 일반적인 경로의 안팎을 유지하고 물론, install.packages()에 대한

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

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

같은 일을한다. 이 모든 명령에는 여러 가지 인수가 있으므로 목표로하는 고리가 이미있을 수 있습니다. 따라서 R_HOME을 변경하지 말고 help(install.packages) (소스에서 설치한다고 가정)을보십시오.

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

+0

그리고 설치를 위해서 필요하다면'lb = .libPaths(); .libPaths (c ('/ custom/path', lb))' – geotheory

관련 문제