Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 使用其他包中的函数-何时使用package::function?_R_Roxygen2 - Fatal编程技术网

R 使用其他包中的函数-何时使用package::function?

R 使用其他包中的函数-何时使用package::function?,r,roxygen2,R,Roxygen2,在为R编写自己的包时,通常需要使用不同包中的函数。 也许它是一个绘图库,比如ggplot2,dplyr,或者一些小功能 但是,在创建依赖于其他包中的函数的函数时,调用它们的适当方式是什么?特别是,我正在寻找何时使用的示例 myFunction双冒号变体:在两个包使用相同函数名的罕见情况下具有明显的优势。有一个函数psych::alpha计算克朗巴赫的alpha作为内部一致性的度量,还有一个函数scales::alpha修改颜色透明度。虽然例子不多,但还是有一些例子dplyr甚至屏蔽了stats和

在为R编写自己的包时,通常需要使用不同包中的函数。 也许它是一个绘图库,比如
ggplot2
dplyr
,或者一些小功能

但是,在创建依赖于其他包中的函数的函数时,调用它们的适当方式是什么?特别是,我正在寻找何时使用的示例


myFunction双冒号变体
在两个包使用相同函数名的罕见情况下具有明显的优势。有一个函数
psych::alpha
计算克朗巴赫的alpha作为内部一致性的度量,还有一个函数
scales::alpha
修改颜色透明度。虽然例子不多,但还是有一些例子
dplyr
甚至屏蔽了
stats
base
包中的函数!(tidyverse在我们的名称空间中继续产生越来越多的条目。如果您使用
dyplr
,您不知道,您今天使用的
base
函数是否会被
dplyr
的未来版本所掩盖,从而导致您的包在未来出现意外的运行时问题。)

如果使用
变量,所有这些都没有问题。如果您的包中最后打开的包就是您所指的包,那么所有这些都不是问题

require
(或
library
)变体会导致代码总体较短,很明显,在代码中的什么时间和位置,不可用的包问题会导致错误,从而变得可见


一般来说,这两种方法都能很好地工作,您可以自由地选择,其中哪一个对您来说是公认的小差异显得更重要。

如果您实际创建的是一个R包(与源代码脚本、R项目或其他方法相反),您永远不应该使用
库()
require()
。这不是使用
package::function()
的替代方法。本质上,您是在
package::function()
function()
之间进行选择,正如@Bernhard所强调的那样,如果两个或多个包中存在名称冲突,显式调用包可确保一致性

您需要担心如何正确定义描述和名称空间文件,而不是
require(package)
。在某处和其他地方都有很多关于这方面的帖子,所以不会详细讨论,例如

如果您正在使用
roxygen2
生成软件包文档,则使用
package::function()
可以帮助您完成上述操作(它将自动生成正确的命名空间文件)