如何在 R 包中正确使用其他包中的函数
Posted
技术标签:
【中文标题】如何在 R 包中正确使用其他包中的函数【英文标题】:How to properly use functions from other packages in a R package 【发布时间】: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 好运! =)
【参考方案1】:
您需要回答的基本问题是:“您是否希望该功能可供软件包的所有用户使用而无需进一步努力?”。如果是,则使用导入 + 适当的命名空间声明,如果否,则使用建议并在 require("psych")
返回 FALSE
时打印信息性错误消息。
我不明白您与导入相关的投诉:“但是在没有安装 psych 的计算机上,加载我的包时会出错”。如果您的包在依赖中,这也是正确的!
【讨论】:
谢谢,非常澄清,我认为建议是最合适的。我认为我在导入时犯了一个愚蠢的错误,我认为当您从 CRAN 安装软件包时也只安装了依赖的软件包,但我想这也发生在导入的软件包中? (仅通过从 zip 文件安装对其进行测试) 是的,安装包时会自动下载导入的包。 那么为什么我们需要importFrom
呢?是特定于 S4 的吗?以上是关于如何在 R 包中正确使用其他包中的函数的主要内容,如果未能解决你的问题,请参考以下文章
如何在 r 汽车包中的后续情节的完整性中以适当的格式在 x 轴上绘制日期?
如何使用 R 中“ivprobit”包中的“ivprobit”功能?
如何在 R 的 plotly 包中使用 plotly 函数?
如何使用 R 中 gplot() 包中的 plotmean() 函数使用 paste0() 操作 n.label 值以获得观察次数