【发布时间】:2016-05-28 09:43:19
【问题描述】:
我创建了一个供个人使用的包,它有一些依赖项:
Depends: R (>= 3.2.3), data.table (>= 1.9.6), bit64 (>= 0.9.5),
ggplot2 (>= 2.0.0), yaml (>= 2.1.13)
当我通过devtools::install() 安装这个包时,它完成并且没有错误。
当我通过library(somePackage) 在新会话中加载包时
我收到了神秘的信息:
附加包:‘data.table’
以下对象被 '.GlobalEnv' 屏蔽:
.N
全局环境中没有对象——我尝试ls(),它返回一个空字符串、清除工作区[broom icon]等。然而:
> .N
[1] 100419
这对我没有任何意义——我知道 .N 在 data.table 中是什么,但不知道 100419 来自哪里。我怎样才能知道这真的要去搜索路径中的哪个环境?
> search()
[1] ".GlobalEnv" "package:somePackage" "package:devtools" "package:yaml"
[5] "package:ggplot2" "package:bit64" "package:bit" "package:data.table"
[9] "tools:rstudio" "package:stats" "package:graphics" "package:grDevices"
[13] "package:utils" "package:datasets" "package:methods" "Autoloads"
[17] "package:base"
我相信依赖是部分原因,因为当我从DESCRIPTION文件中删除这一行时,我没有这个问题。
在 Windows 的 R 3.2.3 上运行 devtools 1.10.0。
更新:感谢@MrFlick 的提示:
> ls(all.names=TRUE)
[1] ".N" ".Random.seed"
所以它在全球环境中,但它是如何到达那里的,为什么它优先?
【问题讨论】:
-
ls()隐藏以句点开头的名称。试试ls(all.names=TRUE)。这是在重新启动 R 之后吗?您是否正在加载现有工作区?getAnywhere(".N")还应该显示变量的来源。 -
@MrFlick 感谢您的建议!请参阅更新——加上是新的 R 重新启动,没有现有的工作区啊——如果我用“删除隐藏的对象”切换它清除环境,它就会消失并且不会屏蔽 data.table。
-
您是否在 RStudio 中运行所有内容?
-
@Pascal 是的,v0.99.879
-
相同版本的 RStudio,但
ls(all.names=TRUE)只提供".Random.seed"。您是否从某个地方定义了.N?知道.N是包data.table中定义的变量。