2

是否有任何合理的方法可以将 CRAN 包与同名的 github 包一起安装?

具体来说,我在github 页面的分支中的geom_sf()geom之后: https ://github.com/tidyverse/ggplot2/tree/sf 。所以我可以像这样安装 sf 分支:sfggplot2

devtools::install_github("tidyverse/ggplot2", ref = "sf")

像这样的 CRAN 版本:

install.packages("ggplot2")

但是,该sf分支ggplot2在其他有用的功能方面落后,所以我不想完全恢复。所以我想知道这里最好的方法是什么。我可以同时安装两者但以某种方式调用一个包 ggplot2_sf 吗?基本上我希望能够将 geom_sf 与当前 CRAN 上的 ggplot2 的所有功能一起使用。

我曾认为也许最好的解决方案是分叉 ggplot2 存储库,合并 master 和 sf 分支,然后安装它。但我想知道是否有更好的方法?

更新

所以事实证明,您需要使用 withr 指定 lib 目录(参见此处)。我试过这个:

withr::with_libpaths(new = "./R/gh_libs/", install_github("tidyverse/ggplot2", ref = "sf"))

这返回了这个错误:

curl::curl_fetch_disk(url, x$path, handle = handle) 中
的错误:SSL CA 证书有问题(路径?访问权限?)

所以我可以像这样将 SSL 认证设置为零:

httr::set_config( httr::config( ssl_verifypeer = 0L ) )
withr::with_libpaths(new = "./R/gh_libs/", install_github("tidyverse/ggplot2", ref = "sf"))

但是,这不会将其安装在我之后的目录中:

从 URL https://api.github.com/repos/tidyverse/ggplot2/zipball/sf下载 GitHub 存储库 tidyverse/ggplot2@sf 安装 ggplot2 安装 1 个包: utils::install.packages 中的摘要警告(pkgs,repos = repos , type = type, dependencies = dependencies, : 'lib = "C:/Program Files/R/R-3.3.3/library"' is not writable in utils::install.packages(pkgs, repos = repos, type = 类型,依赖项 = 依赖项,:无法安装软件包

关于我可能做错的任何其他想法?

4

1 回答 1

1

你可以用devtools::dev_mode()这个。从手册页:

激活后,dev_mode 会创建一个新库来存储已安装的包。如果该新库尚不存在,则在激活 dev_mode 时会自动创建此新库。这允许您在沙箱中测试开发包,而不会干扰您已安装的其他包。

于 2018-01-27T19:34:19.200 回答