【问题标题】:How to properly use functions from other packages in a R package如何在 R 包中正确使用其他包中的函数
【发布时间】:2011-07-12 17:13:31
【问题描述】:

我对此有点困惑。我有一个 R 包,它有一个小函数(不是包的主要部分),其中调用了 psych 包的 principal 函数。如何在DESCRIPTION和NAMESPACE中正确指定?

在DESCRIPTION中设置Depends: psych确保每次加载我的包时都会加载psych包。这可行,但对于我的包裹的这么小部分来说似乎是多余的。

设置Suggests: psych 并在函数中输入require("psych") 是我现在所做的,但是如果没有安装psych,这将不起作用,并且似乎是错误的做法(编写R 扩展说该建议主要用于示例)。

我想我需要导入这个函数。我尝试在DESCRIPTION中设置Imports: psych,在NAMESPACE中设置importFrom(psych,"principal")。这可行,但在没有安装 psych 的计算机上,加载我的包时会出错。

【问题讨论】:

  • 别打扰,psych 是一个很棒的包,我相信你会发现它在某些时候很有用(它有很多辅助函数),尽管你只需要一个功能。祝 PCA/FA 好运! =)

标签: r namespaces package


【解决方案1】:

您需要回答的基本问题是:“您是否希望该功能可供软件包的所有用户使用而无需进一步努力?”。如果是,则使用导入 + 适当的命名空间声明,如果否,则使用建议并在 require("psych") 返回 FALSE 时打印信息性错误消息。

我不明白您与导入相关的投诉:“但是在没有安装 psych 的计算机上,加载我的包时会出错”。如果您的包在依赖中,这也是正确的!

【讨论】:

  • 谢谢,非常澄清,我认为建议是最合适的。我认为我在导入时犯了一个愚蠢的错误,我认为当您从 CRAN 安装软件包时也只安装了依赖的软件包,但我想这也发生在导入的软件包中? (仅通过从 zip 文件安装对其进行测试)
  • 是的,安装包时会自动下载导入的包。
  • 那么为什么我们需要importFrom呢?是特定于 S4 的吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-16
相关资源
最近更新 更多