R用户定义的新环境中的功能

时间:2014-09-30 10:33:07

标签: r

我使用一些用户定义的小函数作为帮助器。这些函数都存储在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(找不到对象)。我想我不是在正确的轨道上,并会欣赏一些提示。

1 个答案:

答案 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