
68
|
第
3
章
误消息并停止。(另外需要注意的是:搜索路径也包含环境,而不仅仅是包,并且当 R
包中的对象已经初始化时,搜索算法会有所不同;有关详细信息,请参阅“ R Language
Definition”(
https://cran.r-project.org/doc/manuals/R-lang.pdf
) 。)
由于工作空间(.GlobalEnv)是搜索列表中的第一项,因此 R 会首先在工作空间中寻
找函数,然后再搜索其他 R 包。如果工作空间和其他 R 包中都包含某个同名的函数,则
工作空间会“遮盖”后者中的函数,这意味着 R 会在找到工作空间中的函数后停止搜索,
因此永远无法找到其他 R 包中的那个函数。如果你想要重新加载 R 包中的函数,这将是
一个好消息;但如果你仍想要使用该 R 包的函数时,这一特性将成为你的障碍。如果你
发现自己遇到了障碍,因为你(或加载的某个包)覆盖了现有加载包中的函数(或其他
对象),你可以使用
environment:: name
的形式从加载的 R 包环境中调用对象。例
如,如果要调用 dplyr 包中的 count 函数,可以使用 dplyr::count 进行调用。即
使你没有加载包,使用完整显式名称来调用函数也是有效的,因此如果安装了 dplyr
但未加载,则仍然可以调用 dplyr::count。
一种越来越常见的情况是,在在线示例中显示完整的
packagename
::
function
。虽然这消除了函数来自何处的模糊性,但它使得示例代码非常
冗长。
请注意, ...