【发布时间】:2014-07-11 22:07:46
【问题描述】:
当我将包加载到全局环境中时,我收到以下消息
> library(saber)
Attaching package: ‘saber’
The following objects are masked _by_ ‘.GlobalEnv’:
load.schedule, teamStats
我不知道这意味着什么,也不知道我是否应该担心它。
为什么会发送此消息,它的含义是什么?
【问题讨论】:
标签: r
当我将包加载到全局环境中时,我收到以下消息
> library(saber)
Attaching package: ‘saber’
The following objects are masked _by_ ‘.GlobalEnv’:
load.schedule, teamStats
我不知道这意味着什么,也不知道我是否应该担心它。
为什么会发送此消息,它的含义是什么?
【问题讨论】:
标签: r
这意味着您的全局环境中存在与您的包中(导出的)事物同名的对象(通常是函数)。键入 search() 以查看 R 解析名称的顺序。
解决办法是,
saber::teamStats。可能 (2) 是最好的,除非导致该消息的情况确实不寻常。
【讨论】:
对于这个特殊案例,我认为还没有完全回答第三个隐含的问题。在您自己的函数的早期版本卡在全局环境中并屏蔽您尝试测试的新版本的情况下,如何解决它?
在这种情况下,用每个 rev 重命名函数是不切实际的。我有同样的情况,发现在重新启动 R 之前删除工作目录中的 .Rdata 文件解决了这个问题。
这在我组装包裹的数百次中只发生过两次。我仍然不确定这些函数是如何偶尔陷入全局的。
【讨论】:
这意味着您的工作区以及正在加载的库中有名为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
【讨论】:
上面的答案给出了低层次的原因。
我只是认为指出当我在 RStudio 中打开一个项目并加载该项目的“相同”库时收到该消息会很有用。
根据上面的解释,这样做显然会产生某种冲突。
【讨论】: