如何将R包快照到packrat?

时间:2016-07-18 16:22:42

标签: r r-package packrat

我正在使用packrat作为我的本地R套餐。我正在尝试将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

我对“无包装'文件182c4636542b'......”错误感到烦恼。应该找我的包名,对吗?

我试过调用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

1 个答案:

答案 0 :(得分:0)

我已经一遍又一遍地遇到此错误,因此我写了一些递归来重新启动该过程,直到完成为止。

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()