R 2.11.0中,windows下在2.10.0之前编译的包都不能加载,需要重新安装。如果你从来没有更新包的习惯,那么直接重新安装所有包即可,所谓“宁可枉装千包,不可使一包漏网”:
install.packages(.packages(all = TRUE))
</p>
但如果你经常更新包并且安装的包比较多的话,那全部重新安装一遍包就很不划算了。我们可以这样来:即找出要重安装的包,然后只安装这些包,这样做能节省一些时间和流量。
<br />
ifReinstall <- function(package){<br />
pfile <- system.file("Meta", "package.rds", package = package)<br />
if(!nzchar(pfile)){<br />
re <- -1 ## 非正常包<br />
} else {<br />
pkgInfo <- .readRDS(pfile)<br />
built <- pkgInfo$Built<br />
R_version_built_under <- as.numeric_version(built$R)<br />
re <- ifelse (R_version_built_under < "2.10.0", 1, 0)<br />
}<br />
return(re)<br />
}</p>
<p>f <- matrix(list.files( R.home("library")))<br />
ReinPkg <- f[which(apply(f,1,ifReinstall)==1)]<br />
install.packages(ReinPkg)<br />
</p>
本机上测试上面代码是没问题的,欢迎大家试试。