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