2011-03-10 46 views
20

我对此有点困惑。我有一个R程序包,它具有一个小函数(不是程序包的市长部分),其中调用了psych程序包的principal函数。我如何在DESCRIPTION和NAMESPACE中正确指定它?如何正确使用R包中其他包的功能

DESCRIPTION中的设置Depends: psych确保每次加载我的包时都会加载心理包。这是有效的,但对于我的软件包的这么一小部分来说似乎是多余的。

设置Suggests: psych和进入功能的require("psych")就是我现在做的,但是这不一样,如果没有安装psych工作,似乎是这样做的错误的方式(写R附加说,建议主要是指举些例子)。

我想我需要导入该函数。我试着在DESCRIPTION中设置Imports: psych,在NAMESPACE中设置为importFrom(psych,"principal")。这可以工作,但是在没有安装心灵软件的计算机上,加载我的软件包时会出现错误。

+2

不要打扰,'psych'是一个很好的包,我相信你会发现它在某些时候很有用(它有很多帮助函数),尽管你只需要一个函数。祝PCA/FA好运! =) – aL3xa 2011-03-10 14:40:37

回答

18

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

我不明白你的进口相关投诉:“但是在没有安装心灵的计算机上,它会在加载我的软件包时出错。这也是如果你的软件包在取决于!

+0

谢谢,非常明确,我认为建议是最合适的。我认为我在导入时犯了一个愚蠢的错误,我认为只有在从CRAN安装软件包时才会安装依赖的软件包,但我想这也会在导入的软件包中出现? (仅通过从zip文件安装来测试它) – 2011-03-10 16:49:28

+0

是的,导入的软件包在安装软件包时会自动下载。 – hadley 2011-03-10 17:32:05

+0

那么为什么我们需要'importFrom'呢? S4是否具体? – mlt 2012-10-22 20:09:37

相关问题