【问题标题】:Import one function in R package (without importFrom)在 R 包中导入一个函数(不带 importFrom)
【发布时间】:2015-09-01 10:54:51
【问题描述】:

我正在编写一个 R 包,我想使用另一个包中的一个函数 (plotKML)。这个外部包有很多依赖项,我不希望我的用户被要求下载等等。如果我在 NAMESPACE 文件中使用importFrom(plotKML, readGPX),它会将所有plotKML 加载到命名空间中并下载我没有的所有依赖项不想。

所以问题是:为我需要的一个函数复制代码是否合适(确保包含该函数中的所有依赖项)?如果是,那么归属/文档适合什么——我是否要从原件中复制文档?

this post 对此问题进行了很好的讨论,Brian Diggs 的回答非常有帮助。但他以“对于您的示例,您最好将 memisc::describe 的代码复制到您的包中,尽管这种方法有其自身的问题和警告”结束,所以我对问题是什么感到有些不确定,并且从归因的角度来看是否合适。

【问题讨论】:

  • 该函数的代码是否在没有依赖关系的情况下运行?
  • 该函数依赖于 XML 包中的一些函数,无论如何我都需要导入,所以没问题。否则,它不需要导入中列出的任何其他包中的函数(需要近 20 个包!)请参阅 here 了解 plotKML 所需的列表。
  • 我假设您的大多数用户都会安装至少一半的 plotKML 导入包。
  • 关于归属的问题可能最好通过联系包作者并简单询问来解决。主要的缺点可能是您将负责维护该函数的单独并行版本。
  • 回应 Roland —— 即使用户有一半的软件包,它仍然需要安装大约 10 个额外的(RSAGA、pixmap、dismo 等)。在我看来,这个负载太高了。

标签: r r-package


【解决方案1】:

有关适当归属的问题可能最好通过直接联系包作者来解决。如上面的 cmets 所述,该包似乎使用 GPL-3,这意味着您可以在包中包含该功能,但您的包也必须获得 GPL-3 许可。 (和往常一样,这里可能没有人是律师,所以你要检查......)

只复制您需要的功能的主要缺点是您需要负责维护它。这可能还意味着以一种与 plotKML 的原始版本保持同步的方式对其进行维护。取决于包、周围的代码以及更新频率,这可能相当简单,也可能很糟糕。

【讨论】:

    猜你喜欢
    • 2016-09-05
    • 2019-05-02
    • 1970-01-01
    • 1970-01-01
    • 2017-01-18
    • 1970-01-01
    • 2019-03-01
    • 1970-01-01
    • 2021-04-25
    相关资源
    最近更新 更多