被全局环境掩盖的对象的含义

Ric*_*ven 19 r

当我将包加载到全局环境中时,我收到以下消息

> library(saber)

Attaching package: ‘saber’

The following objects are masked _by_ ‘.GlobalEnv’:

    load.schedule, teamStats
Run Code Online (Sandbox Code Playgroud)

我不知道这意味着什么,也不知道我是否应该关注它.

为什么要传递此消息,这是什么意思?

jor*_*ran 17

这意味着您的全局环境中存在对象(通常是函数),其名称与包中的(导出)内容相同.键入search()以查看R解析名称的顺序.

解决方案是,

  1. 不要在全局环境中使用这些名称创建对象
  2. 将包中的对象重命名为不太可能产生冲突的内容,或者重新考虑导出它们的决定,或者
  3. 请记住,您将始终必须将这些对象称为saber::teamStats.

可能(2)是最好的,除非导致这个信息的情况真的不同寻常.


kon*_*vas 6

这意味着你有一个名为对象load.schedule,teamStats在您的工作空间,以及在你加载库.它警告您,当您调用load.schedule它时将使用工作区中的那个(因为它是搜索路径中的第一个)而不是您正在附加的那个.试试这个例子

ddply <- function(x) x + 1
library(plyr)

# Attaching package: ‘plyr’
# 
# The following object is masked _by_ ‘.GlobalEnv’:
# 
#     ddply

ddply(3) # the one we just defined is used, as global env is first in the search path
#[1] 4
Run Code Online (Sandbox Code Playgroud)


小智 5

还有第三个隐含的问题,我认为这个特殊情况并没有得到完全回答.如何在您自己的函数的早期版本卡在全局环境中并屏蔽您尝试测试的新版本的情况下修复它?

在这种情况下,在每次转速时重命名功能都不实用.我有相同的情况,发现在重新启动R之前删除工作目录中的.Rdata文件解决了问题.

在我组装包裹的数百次时间里,这只发生了两次.我仍然不确定这些功能是如何偶尔陷入全局的.