繁体   English   中英

新环境中的R用户定义函数

[英]R user-defined functions in new environment

我使用一些用户定义的小函数作为助手。 这些函数都存储在R_HOME_USER/helper目录中。 到目前为止,这些功能都是在R启动时获取的。 总体方法类似于`lapply(my.helper.list,source)。 我现在希望这些函数源化但不出现在我的环境中 ,因为它们会污染它们。

第一个干净的方法是使用我所有的助手来构建一个程序包。 目前,我不想遵循此方法。 第二种方法是用一个前导点命名这些助手。 这让我不得不运行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(找不到对象)。 我想我走的路不正确,请多多指教。

我认为您应该在调用中分配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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM