首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自动更新从R-锻造安装的软件包

自动更新从R-锻造安装的软件包
EN

Stack Overflow用户
提问于 2010-10-19 19:11:00
回答 1查看 21K关注 0票数 45

我最近从R-2.11.1安装了R-2.12.0,并通过以下方式更新了所有CRAN软件包:

代码语言:javascript
复制
update.packages(checkBuilt=TRUE, ask=FALSE)

现在,我想更新所有的软件包,我已经从R-锻造,但只有当他们没有在CRAN上可用。换句话说,我不能简单地跑:

代码语言:javascript
复制
update.packages(checkBuilt=TRUE, ask=FALSE, repos="http://r-forge.r-project.org")

因为它将在R-2.12.0附带的版本上安装survival包的R伪造版本。

我可能会使用来自old.packagespackageStatus的一些信息来确定哪些包只存在于R-forge上,但在构建自定义解决方案之前,我想问一问是否有更简单的方法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-10-19 22:46:15

这个怎么样:

代码语言:javascript
复制
# 1. Get the list of packages you have installed, 
#    use priority to exclude base and recommended packages.
#    that may have been distributed with R.
pkgList <- installed.packages(priority='NA')[,'Package']

# 2. Find out which packages are on CRAN and R-Forge.  Because
#    of R-Forge build capacity is currently limiting the number of
#    binaries available, it is queried for source packages only.
CRANpkgs <- available.packages(
  contriburl=contrib.url('http://cran.r-project.org'))[,'Package']
forgePkgs <- available.packages(
  contriburl=contrib.url('http://r-forge.r-project.org', type='source')
)[,'Package']

# 3. Calculate the set of packages which are installed on your machine,
#    not on CRAN but also present on R-Force.
pkgsToUp <- intersect(setdiff(pkgList, CRANpkgs), forgePkgs)

# 4. Update the packages, using oldPkgs to restrict the list considered.
update.packages(checkBuilt=TRUE, ask=FALSE,
  repos="http://r-forge.r-project.org",
  oldPkgs=pkgsToUp)

# 5. Profit?
票数 46
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3971815

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档