我对在自己的软件包中安装外部软件包有疑问。假设我的软件包需要两个软件包:ggplot2和TTR。我创建了一个新的.R文件,它使用以下代码保存在程序包R文件夹中:
#' mypackage
#'
#' @docType package
#' @name mypackage
#' @import ggplot2
#' @import TTR
NULL
默认情况下,现在@import
命令不会安装缺少的软件包。在我的软件包安装过程中,我得到的信息是没有软件包TTR。当我手动安装TTR软件包时,不会发生此问题。然后@import
命令可以正常工作并识别TTR包。我的问题是:如何告诉@import
命令也安装缺少的软件包?我尝试了load_all,但无法正常工作。
答案 0 :(得分:1)
您可能遇到的问题是您的软件包必须位于CRAN上,这样install.packages
还会根据dependencies
参数的值安装外部软件包。
这样做的原因是install.packages
假设依赖项与程序包位于同一位置。
如果您的软件包是本地.tar.gz
或.zip
文件,则可以使用:
devtools::install_local('mypackage.tar.gz')
这将自动获取@import
中定义的CRAN依赖项
答案 1 :(得分:0)
要将外部软件包添加到软件包中时,必须执行以下操作:
在Description文件中添加包
@。r文件中的roxygen2导入
在描述文件中,您必须添加一行:
Imports:
stats,
grDevices,
ggplot2
在.R文件中,使用roxygen2时,必须添加一行:
#' @import ggplot2
roxygen2然后自动为您(需要在其中)将ggplot2添加到NAMESPACE文件中。
当有人安装您的软件包时,现在将自动安装ggplot2。
只是猜测,但也许是问题出在,您或用户没有实际安装软件包,而是打开了.Rproj文件并尝试构建软件包。然后,我认为您必须先手动安装软件包。
尝试构建您的软件包。您将获得tar.gz / .tgz,然后在R Studio中的“工具”->“安装软件包”或通过install.packages命令安装该软件包。