安装R包后,全局环境中的神秘.N对象

时间:2016-02-16 22:08:47

标签: r devtools

我创建了一个供个人使用的包,它有一些依赖关系:

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(),它返回一个空字符串,清除工作区[扫帚图标]等。但是:

> .N
[1] 100419

这对我没有意义 - 我知道data.table中的.N是什么,但不知道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文件中删除这一行时,我没有这个问题。

devtools for Windows上运行1.10.0 R 3.2.3

更新:感谢来自@MrFlick的提示:

> ls(all.names=TRUE)
[1] ".N"           ".Random.seed"

所以它是在全球环境中,但它是如何实现的,为什么它优先?

1 个答案:

答案 0 :(得分:1)

我在加载data.table时收到了相同的消息。不知道我什么时候加载.N所以我选择了以下内容:

  1. 检查所有变量以查看我的内容:

    ls(all.names=TRUE)

  2. 删除所有可变项:

    rm(list = ls(all.names=TRUE))