正如您现在可能已经查找过帮助页面一样::
有助于从该特定包访问确切的功能。当你加载时dplyr
您可能收到如下消息..
The following objects are masked from ‘package:base’:
intersect, setdiff, setequal, union
因此,举例来说,如果您想使用intersect
dplyr 或基础包中的函数,您需要使用::
双冒号。用法如下
mtcars$model <- rownames(mtcars)
first <- mtcars[1:20, ]
second <- mtcars[10:20, ]
dplyr::intersect(first, second)
base::intersect(first, second)
更新:添加了附加说明
注意:加载库的顺序决定了特定功能的优先访问。不同包的开发人员倾向于使用相同的函数名称。然而,当 R 遇到一个函数时,它会按顺序运行特定会话已加载的不同库。您可以通过运行来检查会话中的包(.packages())
[1] "tidyr" "data.table" "dplyr" "stats"
[5] "graphics" "grDevices" "utils" "datasets"
[9] "methods" "base"
正如您在上面的示例会话中看到的,tidyr
是我加载的最后一个库,它是 r 会话的第一个条目。因此,当您在代码中使用任何函数时,首先会在tidyr
-> 那么data.table
-> 那么dplyr
依此类推,最后base
包被查找。因此,在此过程中,当包之间存在函数名称重叠时,最后加载的函数名称会掩盖先前的函数名称。为了避免这种屏蔽,您可以在 R 代码中指定在何处查找该函数。因此,这里base::intersect
,将使用基础库中的函数而不是dplyr
。或者,您可以使用以避免加载完整的库。这有积极的一面,也有消极的一面。阅读链接并了解更多信息。
运行并检查差异。
这里有一些资源供您了解。
比较库()、require()、::
命名空间