微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何让我自己的软件包默认安装外部软件包

如何解决如何让我自己的软件包默认安装外部软件包

我对在自己的软件包中安装外部软件包有疑问。假设我的软件包需要两个软件包:ggplot2和TTR。我创建了一个新的.R文件,它使用以下代码保存在程序包R文件夹中:

#' mypackage
#'
#' @docType package
#' @name mypackage
#' @import ggplot2
#' @import TTR
NULL

认情况下,现在@import命令不会安装缺少的软件包。在我的软件包安装过程中,我得到的信息是没有软件包TTR。当我手动安装TTR软件包时,不会发生此问题。然后@import命令可以正常工作并识别TTR包。我的问题是:如何告诉@import命令也安装缺少的软件包?我尝试了load_all,但无法正常工作。

解决方法

您可能遇到的问题是您的软件包必须位于CRAN上,这样install.packages还会根据dependencies参数的值安装外部软件包。

这样做的原因是install.packages假设依赖项与程序包位于同一位置。

如果您的软件包是本地.tar.gz.zip文件,则可以使用:

devtools::install_local('mypackage.tar.gz')

这将自动获取@import中定义的CRAN依赖项

,

要将外部软件包添加到软件包中时,必须执行以下操作:

  • 在Description文件中添加包

  • @。r文件中的roxygen2导入

在描述文件中,您必须添加一行:

Imports:
    stats,grDevices,ggplot2

在.R文件中,使用roxygen2时,必须添加一行:

#' @import ggplot2

roxygen2然后自动为您(需要在其中)将ggplot2添加到NAMESPACE文件中。

当有人安装您的软件包时,现在将自动安装ggp​​lot2。

只是猜测,但也许是问题出在,您或用户没有实际安装软件包,而是打开了.Rproj文件并尝试构建软件包。然后,我认为您必须先手动安装软件包。

尝试构建您的软件包。您将获得tar.gz / .tgz,然后在R Studio中的“工具”->“安装软件包”或通过install.packages命令安装该软件包。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。