【问题标题】:Mask a function from `ls` in R从R中的`ls`屏蔽一个函数
【发布时间】:2013-07-17 18:05:23
【问题描述】:

我想在我的 .Rprofile 中添加以下函数,以便更轻松地安装生物导体包:

install.bioconductor <- function(...) {
  source("http://bioconductor.org/biocLite.R")
  biocLite(...)
}

但是当我加载一个新的 R 会话时,当我调用 ls 时,现在会列出这个函数。有没有办法屏蔽函数的显示?

【问题讨论】:

  • 你可以将它命名为.install.bioconductor,然后它只会在你命名为ls(all=TRUE)时出现。

标签: r rprofile


【解决方案1】:

您可以将它放在自己的环境中,并将该环境附加到搜索路径。

myFUNs <- new.env()
myFUNs$install.bioconductor <- function(...) {
  source("http://bioconductor.org/biocLite.R")
  biocLite(...)
}
attach(myFUNs) # attach to the search path
rm(myFUNs)     # remove from .GlobalEnv

# it is still accessible via 
# install.bioconductor(...)

然后它可以访问,但不会出现在ls() 中。 (search() 可以看到搜索路径附加了什么,ls(myFUNs) 可以看到myFUNs 中的内容)

或者,正如@JoshuaO'Brien 在comment 中提到的那样,您可以将其保留在.GlobalEnv 中,但在名称的开头添加一个点(即命名为.install.bioconductor)以便它“隐藏” " 这样它就不会显示为ls(),而是显示为ls(all.names=TRUE)

【讨论】:

  • 有没有办法从ls 屏蔽myFUNs?两种解决方案都很好,但不完全是我想要的。我想我需要坐下来写一个包来保存我的实用功能。
  • @Manetheran,在您将其 attached 到搜索路径后,您可以使用 rm(myFUNs) 将其从您的 .GlobalEnv 中删除
猜你喜欢
  • 2011-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-12
相关资源
最近更新 更多