2016-04-26 75 views
0

这是非常简单的问题。 我正在延长某人的包裹。它当前使用软件包A,B,并且它们在DESCRIPTION文件中列出。R:如何让我的包使用另一个包?

如果我需要包C中的函数 - 将软件包添加到依赖关系中 - 是否只是将该包添加到DESCRIPTION文件中,并且这些都是需要的?进入哪个部分 - 取决于或导入?还有其他更多的步骤吗?当我的代码需要使用包C函数时,是否需要使用前缀C :: functionInC()?

+1

通常的参考资料:https://cran.r-project.org/doc/manuals/r-release/R-exts.html看起来像Depends不赞同Imports,只是看了第一部分。 – Frank

+0

我把它放在Imports中,并且只有在把它放入它后才能使用。 – userJT

+1

使用Depends而非Imports导致它“工作”的事实可能会产生误导。将其列入描述文件中的Imports部分仅意味着它将被安装,而不是连接。导入仍然可能是最好的方式,但我想你也需要在NAMESPACE文件中指定导入。 – joran

回答

0

简短回答: 将C添加到Imports:并在使用C函数时,使用双分号前缀。

较长的情况下:

下面的链接,如果您使用的是从另一个包只是一些功能提供了以下建议 http://r-pkgs.had.co.nz/namespace.html#imports

R的功能和

,我的建议是要注意包名描述文件的Imports:域中,并使用::显式调用函数,例如pkg :: fun()。

如果您重复使用函数,您可以通过使用@importFrom pgk fun导入函数来避免::。这也有一个小的性能优势,因为::功能评估时间增加了大约5μs。

或者,如果您反复使用其他软件包中的许多功能,则可以使用@import软件包导入其中的所有功能。这是最不推荐的解决方案,因为它会让你的代码更难阅读(你不知道函数来自哪里),并且如果你导入了很多包,它就增加了函数名冲突的可能性。