我使用一些用户定义的小函数作为帮助器。这些函数都存储在R_HOME_USER/helper
目录中。到目前为止,这些功能都来自R启动。整个方法类似于lapply(my.helper.list,source)。我现在想要这些函数来源但不会出现在我的环境中,因为它们会污染它。
第一个干净的方法是用我所有的帮助器构建一个包.R。现在,我不想遵循这种方法。第二种方法是用前导点命名这些助手。这使我不得不运行R > .helper1()
。
最好的方法是在特定的可访问环境中定义这些帮助程序,但我正在弄乱代码。我的想法是首先创建一个新环境:
.helperEnv <- new.env(parent = baseenv())
attach(.helperEnv, name = '.helperEnv')
很好,R > search()
在列表中返回'helperEnv'。然后我跑:
assign('helper1', helper1, envir = .helperEnv)
rm(helper1)
很好,ls(.helperEnv)
返回'helper1',此功能在我的环境中不再出现。
问题是我无法运行helper1(找不到对象)。我想我不是在正确的轨道上,并会欣赏一些提示。
答案 0 :(得分:1)
我认为您应该在致电pos
时将attach
参数指定为负数:
.helperEnv <- new.env()
.helperEnv$myfunc<-function(x) x^3+1
attach(.helperEnv,name="helper",pos=-1)
ls()
#character(0)
myfunc
#function(x) x^3+1