2014-07-06 2 views
4

나는 party 라이브러리를로드하려고 다음과 같은 오류가있어 install.packages`는 : 업데이트 패키지`update.packages` 대`

Loading required package: zoo 
Error in loadNamespace(i, c(lib.loc, .libPaths()), versionCheck = vI[[i]]) : 
    namespace ‘lattice’ 0.20-24 is already loaded, but >= 0.20.27 is required 
Error: package ‘zoo’ could not be loaded 

그래서 나는 내의 모든 패키지를 업데이트하기로 결정 같은 세션 ( detach all packages while working in R), lattice을 포함 lattice가 업데이트되면 zoo 다음 party 후 제대로로드 할 것으로 기대 :

pkgs <- names(sessionInfo()$otherPkgs) 
pkgs <- paste('package:', pkgs, sep = "") 
lapply(pkgs , detach, character.only = TRUE, unload = TRUE) 
update.packages(checkBuilt=TRUE, ask=FALSE, 
       repos="http://r-forge.r-project.org", 
       oldPkgs=c("lattice","zoo","party") 
) 

그것은 작동하지 않았다 (동일한 세션 내에서 witho 다시 시작한 후 유타는) .RData를 사전로드 :

> library(party) 
Loading required package: zoo 
    Error in loadNamespace(i, c(lib.loc, .libPaths()), versionCheck = vI[[i]]) : 
    namespace ‘lattice’ 0.20-24 is already loaded, but >= 0.20.27 is required 
    Error: package ‘zoo’ could not be loaded 

How to update R2jags in R?에 따르면 단순히 다시 시작, 내가 업데이트 할 해당 패키지에 install.packages을 실행하는 것이 가장 좋습니다. 그리고 실제로 트릭을했습니다.

그래서 여기에 질문 : update.packages이 필요합니다. 실행중인 세션 내에서 업데이트하는 것이 취약하다는 것을 고려하면, install.package은 세션을 재시작해야만 할 것입니다. R 패키지 관리 부두의 어떤 비트가 누락 되었습니까? 감사.

답변

7

이것은 내가 현재 작동중인 R 세션 외부에서 "설치"및 "업데이트"작업을 모두 시작하는 것을 선호하는 또 다른 이유입니다.

명령 줄을 사용하면로드 된 패키지없이 새로운 R 세션을 얻을 수 있으며 여기에서 경험 한 문제는 발생하지 않습니다. 그리고 지름길로 update.rinstall.rlittler을 사용하여 정의하고 (해당 패키지의 examples/ 디렉토리에 포함) 물론 Rscript를 통해 동일한 작업을 수행 할 수 있습니다.

7

Dirk는이 문제를 피하기 위해보다 일반적인 전략을 제공합니다. 그러나 대화 형 세션에서 재부팅 할 필요가없고 업데이트가 필요한 패키지를 언로드하려는 경우 (detach(.) -ing 또는 update.packages(.) -ing이 효과적으로 수행되지 않음) 다음과 같은 기능이 있습니다. unloadNamespace 보통 나를 위해 일한다. 헬프 페이지에는 완전히 안전하지 않다고 말하는 경고가 있지만 어려움이 없습니다. 시도 :

unloadNamespace("lattice") # or lapply()-ing as you attempted with `detach` 
update.packages("lattice") 
require(lattice) # or library()