首页 > 解决方案 > 开发 R 包时避免导入包

问题描述

假设我正在开发一个 R 包,其中我只使用包“P”中的一个函数(例如,函数“F”)。我会使用函数“F”的输出我的函数中执行其他操作。

为此,我将在描述的“导入:”部分中包含包“P”。

因为“P”是要导入的包,所以当有人安装我的包时,她最终也会安装包“P”,因为我在包中的某个函数中使用了它的一个函数,函数“F”。

我的问题如下:

  1. 如何避免强迫用户安装整个包“P”?
  2. 也就是说,我可以让用户只安装包“P”中的功能“F”吗?
  3. 我可以将“F”函数的源代码复制并粘贴到我的包中,这样用户就不必安装整个包“P”吗?
  4. 问题 3 的答案是否取决于软件包“P”所在的许可证?

标签: rbuildpackage

解决方案


以下是您的问题的答案

  1. 如果该软件包不可用,则使您的功能不可用或功能失调。您的函数必须检查包 P 是否可用,如果不可用,则抛出错误或警告并返回。这意味着用户可以决定安装包 P 以获取包的功能。

  2. 没门

  3. 或许,请参见 4。实际上,这取决于.

  4. 是的。

如果您和您的包裹都可以接受限制(减少功能),那么答案 1 对我来说是一个简单的建议。

Route 3 是另一个可行的选择。这取决于几件事。

首先是许可证。

除此之外,没有什么能真正阻止你。

但是 - 我会花一些时间试图改善这种情况。

Package P 是不是设计得很糟糕?是不是臃肿?我会联系作者并解释问题。人们聚在一起交谈,出乎意料地轻松解决了各种问题。他或她也许是一个欢迎对他或她的工作感兴趣的好人。大多数人都是。

将社区代码库碎片化(就像你从其他包中撕下东西一样),整体上可能并不好。


推荐阅读