我试图加载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
Run Code Online (Sandbox Code Playgroud)
所以我决定更新同一个会话中的所有包(在R中工作时分离所有包),包括lattice,希望zoo然后在更新party后再正确加载lattice:
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")
)
Run Code Online (Sandbox Code Playgroud)
它不起作用(在同一个会话中并且在没有预加载的情况下重新启动之后.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
Run Code Online (Sandbox Code Playgroud)
根据如何在R中更新R2jags?最好只运行install.packages我想要更新的那些软件包,然后重新启动.事实上它确实做到了.
所以这里有一个问题:什么时候被update.packages调用,因为运行会话中的更新至少可以说是脆弱的,并且install.package会以重启会话为代价来完成这个工作?什么位的R我缺少的包管理巫术?谢谢.
Dirk提供了一个更一般的策略来避免这个问题.但是,如果您处于一个您不想重新启动的交互式会话中,并且您想要卸载需要更新的程序包(detach(.)-ing或update.packages(.)-ing 无法有效地完成),那么有一个函数,unloadNamespace通常适用于我.其帮助页面中有警告称它不完全安全,但我没有遇到任何困难.尝试:
unloadNamespace("lattice") # or lapply()-ing as you attempted with `detach`
update.packages("lattice")
require(lattice) # or library()
Run Code Online (Sandbox Code Playgroud)