在 RMD 中使用外部包作为 R 包的一部分

Using external packages in an RMD as part of an R package

上下文

我正在开发一个包含多个 RMD 的 R 包,以演示各种组件,即详细示例、理论等。RMD 按照建议存储在 inst 文件实例中,并且我有一些函数将它们复制到用户的工作目录中,以便他们可以与示例进行交互并从中导出内容。

问题

我希望这些 RMD 文件之一使用两个库,其中一个也在 Roxygen2 示例中使用(另一个没有)。软件包本身的功能不需要这两个库,但是:

  1. 对于第一个包,输入需要几个变量(我想展示),如果没有一个非常专门的函数,其中一个必需的变量将很难计算,这个函数可以在不同的包。我认为它不在包的范围内来实现这个功能(如果是的话,它只是一个稍微调整过的外部包函数的别名,我认为这不是好的做法)。

  2. 第二个包是boot包。我只想展示一个使用我的包引导置信区间的示例。这不是必需的,但很有用,因为涉及随机过程。

问题

将这些包包含在我的 RMD 文件中的最佳做法是什么。显然,对于 Roxygen2 示例中的那个,我需要它作为建议包,但另一个在技术上似乎不需要它。

我应该将它们列为建议包吗?如果我这样做,我应该向 RMD 文件添加存在性检查以确保用户拥有它们,还是应该让他们自己解决?

提前致谢!

是的,将它们列为建议的软件包,并在使用前检查它们是否已使用 requireNamespace 安装。

我不确定您在哪里看到将 Rmd 文件放入 inst 的建议;将它们构造为小插曲可能更有意义,并将它们放在 vignettes 目录中。这是放置此类文档的标准位置。

通常没有必要将它们复制到工作目录中(这通常被认为是不好的做法,除非您只是在询问后才这样做,并且注意不要破坏用户自己的文件)。您可以使用 system.file("doc/something.Rmd", package = "yourPackage") 从那里访问它们而无需复制。