我有一个 Shiny 应用程序,我通过调用一个调用shiny::runApp
的函数来运行。应用程序可以访问全局环境,因此它可以访问具有事先确定的名称的对象中的数据。但是,我想通过运行应用程序的函数的参数传递数据。以下示例有效。
f <- function(param) {
runApp(
list(
ui = fixedPage({
verbatimTextOutput('text')
}),
server = function(input, output) {
output$text <- renderPrint(param)
})
)
}
f("hello")
但是,当从文件加载 ui 和服务器组件时,我无法重现此行为:
文件内容:
$ cat ui.R
fixedPage({
verbatimTextOutput('text')
})
$ cat server.R
function(input, output) {
output$text <- renderPrint(param)
}
R 代码:
g <- function(param) {
runApp()
}
g("hello")
错误讯息:
Listening on http://127.0.0.1:3870
Warning: Error in renderPrint: object 'param' not found
Stack trace (innermost first):
86: renderPrint
85: func
84: eval
83: eval
82: withVisible
81: evalVis
80: utils::capture.output
79: paste
78: origRenderFunc
77: output$text
2: runApp
1: g [#2]
我猜这与组件不是在两个示例中的类似范围中创建这一事实有关,但我找不到解决方法......在第二个示例中,有没有办法我可以从Shiny app访问函数g
的环境?
答案 0 :(得分:3)
是。在全局环境中定义WebDriver tempDriver = new ChromeDriver();
// do some stuff
tempDriver.close();
对象:
param