1

我在 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)。谢谢。

4

1 回答 1

-1

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

pkgnamehere:::.options

参见例如:

library(foreach)
foreach:::.foreachGlobals
<environment: 0x000000001448fae8>
于 2013-03-20T19:14:23.307 回答