我认为使用完全限定的名称就足够了,以避免用我没有明确介绍的名称来污染我的范围,但显然,对于R来说,情况并非如此。
例如,
% R_PROFILE_USER= /usr/bin/R --quiet --no-save --no-restore
> ls(all = TRUE)
character(0)
> load("/home/berriz/_/projects/fda/deseq/.R/data_for_deseq.RData")
> ls(all = TRUE)
[1] "a" "b" "c"
> ?rlog
No documentation for ‘rlog’ in specified packages and libraries:
you could try ‘??rlog’到现在为止还好。特别是,如最后一个命令所示,解释器对rlog一无所知。
但在我跑完之后
> d <- DESeq2::DESeqDataSetFromMatrix(countData = a, colData = b, design = c)...then,从今以后,命令?rlog将为我没有显式引入环境中的函数生成一个文档页(并且没有引用完全限定的名称)。
我觉得这种行为令人不安。
特别是,我不知道什么时候我已经明确定义的某个定义会被暗淡无光地掩盖为某个看似无关的命令的副作用。
我如何控制环境所能看到的?
或者换个说法,我怎样才能防止像上面所示的副作用呢?
发布于 2017-07-27 16:56:31
不确定“范围”在R中是否与其他语言的含义相同。R使用“环境”(详细说明见http://adv-r.had.co.nz/Environments.html )。您在R中的作用域包括加载的所有环境,正如您已经发现的,用户并不显式地控制加载的每个环境。
例如,
ls()列出默认环境“.GlobalEnv”中的对象
search()列出当前加载的环境。
ls(name='package.stats')在默认的R安装中,'package:stats‘是启动时加载的环境之一。
默认情况下,您创建的所有内容都存储在全局环境中。
ls(name='.GlobalEnv')通过使用$语法引用对象环境,可以显式引用创建的对象。
x <- c(1,2,3)
.GlobalEnv$xhttps://stackoverflow.com/questions/41685025
复制相似问题