【问题标题】:How to snapshot R package to packrat?如何将 R 包快照到 Packrat?
【发布时间】:2016-07-18 16:22:42
【问题描述】:

我在本地 R 包中使用 packrat。我正在尝试将MultinomialCI 添加为依赖项,但无法将其加载到packrat 中。特别是,我不知道如何手动快照。

Rstudio 的包查看器如下所示:

| Name          | Description | Version | Packrat | Source    |  
|-------------------------------------------------------------|  
| MultinomialCI | blah blah   | 1.0     |         |           |
|-------------------------------------------------------------|  

我了解我希望 Packrat 字段为非空或匹配 Version 字段中的 1.0。我不确定为什么 Source 是空白的 - 也许这是问题的一部分?我使用 install.packages 从 CRAN 安装了 MultinomialCI。

我也尝试使用packrat::snapshot 手动运行快照:

> packrat::snapshot()
Error in findLocalRepoForPkg(pkg, repos, fatal = fatal) : 
  No package 'file182c4636542b' found in local repositories specified

我对“No package 'file182c4636542b' ...”错误感到恼火。它应该在寻找我的包裹名称,对吗?

我试过拨打packrat::snapshot('C:\\My\\Package\\Directory') 无济于事。同样的错误。 :/

这也是我的会话信息,

> sessionInfo()
R version 3.3.0 (2016-05-03)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)

locale:
[1] LC_COLLATE=English_United States.1252  LC_CTYPE=English_United States.1252   
[3] LC_MONETARY=English_United States.1252 LC_NUMERIC=C                          
[5] LC_TIME=English_United States.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

loaded via a namespace (and not attached):
[1] tools_3.3.0     packrat_0.4.7-1

提前感谢您的帮助!


更新

我尝试运行 packrat::restore,然后它识别出我的包名并出现同样的错误:

> packrat::restore()
Error in findLocalRepoForPkg(pkg, repos, fatal = fatal) : 
  No package 'my_pkg' found in local repositories specified

【问题讨论】:

  • 我遇到了类似的问题。到目前为止,我已经成功卸载了YYY,其中YYY 取决于错误消息中的包(file182c4636542b 为您,rstanarm 为我)。我认为尝试安装file182c4636542b 也可能有效,但我仍在测试它,因为运行snapshot 需要几个小时。
  • 好的,我所说的“小时”是指 20 分钟,并且新安装有问题的软件包似乎可以工作。

标签: r r-package packrat


【解决方案1】:

我一遍又一遍地遇到这个错误,所以我写了一个小递归来重新启动这个过程,直到它完成。

snapshot_install_recurse = function(){
  tryCatch( 
    packrat::snapshot(), 
    error = function(e) {
      pkg = 
        e$message %>%
        strsplit("'") %>%
        extract2(1) %>% 
        extract2(2) 
      cat("Installing", pkg, "and restarting")
      install.packages(pkg)
      snapshot_install_recurse()
    }
  )
}
snapshot_install_recurse()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-24
    • 1970-01-01
    • 1970-01-01
    • 2015-11-22
    • 1970-01-01
    • 2015-05-15
    相关资源
    最近更新 更多