首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将范围内的名称限制为我显式创建的名称?

如何将范围内的名称限制为我显式创建的名称?
EN

Stack Overflow用户
提问于 2017-01-16 21:09:35
回答 1查看 153关注 0票数 9

我认为使用完全限定的名称就足够了,以避免用我没有明确介绍的名称来污染我的范围,但显然,对于R来说,情况并非如此。

例如,

代码语言:javascript
复制
% 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一无所知。

但在我跑完之后

代码语言:javascript
复制
> d <- DESeq2::DESeqDataSetFromMatrix(countData = a, colData = b, design = c)

...then,从今以后,命令?rlog将为我没有显式引入环境中的函数生成一个文档页(并且没有引用完全限定的名称)。

我觉得这种行为令人不安。

特别是,我不知道什么时候我已经明确定义的某个定义会被暗淡无光地掩盖为某个看似无关的命令的副作用。

我如何控制环境所能看到的?

或者换个说法,我怎样才能防止像上面所示的副作用呢?

EN

回答 1

Stack Overflow用户

发布于 2017-07-27 16:56:31

不确定“范围”在R中是否与其他语言的含义相同。R使用“环境”(详细说明见http://adv-r.had.co.nz/Environments.html )。您在R中的作用域包括加载的所有环境,正如您已经发现的,用户并不显式地控制加载的每个环境。

例如,

代码语言:javascript
复制
ls()

列出默认环境“.GlobalEnv”中的对象

代码语言:javascript
复制
search()

列出当前加载的环境。

代码语言:javascript
复制
ls(name='package.stats')

在默认的R安装中,'package:stats‘是启动时加载的环境之一。

默认情况下,您创建的所有内容都存储在全局环境中。

代码语言:javascript
复制
ls(name='.GlobalEnv')

通过使用$语法引用对象环境,可以显式引用创建的对象。

代码语言:javascript
复制
x <- c(1,2,3)
.GlobalEnv$x
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41685025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档