为特定命名空间中的对象分配值 - R.

时间:2013-03-20 18:42:54

标签: r namespaces scope gwidgets

我在gWidgets-R中有一个处理程序,其中加载了数据:

 handler=function(h,...){
                     fname <- gfile(text="Choose a file", 
                                    type="open", 
                                    action="print",
                                    handler = 
                                      function(h,...){
                                        do.call(h$action, list(h$file))
                                      }
                     )
                     load(fname)
                     .GlobalEnv$SETTINGS <- setwrite
                     svalue(status_bar) <- "Settings Loaded"
                   })

你可以看到为了加载的东西在函数结束后仍然可用,最后我放入GlobalEnv,否则当处理函数结束时,创建的“setwrite”对象会在处理程序结束时被销毁功能完成。然而,这不是我想要的结果,因为用户不需要对象,但我的包中的其他功能(未导出)确实需要使用此对象。我想我需要做的是在这些函数的范围内放置“setwrite”变量,就像package:pkgnamehere$SETTINGS <- setwrite应该放在.GlobalEnv$SETTINGS <- setwrite行的位置,但它告诉我无法找到对象包。我如何正确地执行此操作,以便将处理程序创建的对象放入包非范围函数/其他gWidgets事件处理程序的范围内。 (非导出,因为想法是用户应该只能使用GUI)。感谢。

1 个答案:

答案 0 :(得分:-1)

您还可以在包的环境中存储选项。

pkgnamehere:::.options

参见例如:

library(foreach)
foreach:::.foreachGlobals
<environment: 0x000000001448fae8>