我在闪亮的应用程序里有ui.R
,server.R
,global.R
。
我想在选择dataset
并按actionButton
时使用反应式全局变量。
例:
用户界面。R
fluidPage(
titlePanel("Using global variable"),
fluidRow(
uiOutput("ui1"),
uiOutput("ui2"),
uiOutput("ui3")
),
)
)
服务器。R
function(input, output) {
output$ui1 <- renderUI({
selectInput("dataset", "firstValue", choices = c("first", "second", "third")
})
output$ui2 <- renderUI({
actionButton("doIt", class="btn-primary", "change")
})
output$ui3 <- renderText({
paste(catPath)
})
}
全球。R
catPath <<- paste(output$dataset, "/completed", sep="")
结果在ui3 renderText
上first/completed
,当我在dataset
中选择first
时,按actionButton
。
如何完成此过程?
我同意@JohnPaul和@Lee88,您的catPath
可能属于server.R
。话虽如此,我现在把它留在这里(假设你在MWE中有其他原因)。
global.R
:
catPath <- ""
我需要将其设置为某些内容以便以后可以引用,否则此处使用的值应该毫无意义(尽管如果不采取任何操作,它将返回)。
ui.R
:
我添加了一个"停止?"操作按钮,以便您可以"退出"您的应用程序并将catPath
的价值捕获到调用环境中。如果您不打算有意退出应用,则不需要。
fluidPage(
titlePanel("Using global variable"),
fluidRow(
uiOutput("ui1"),
uiOutput("ui2"),
uiOutput("ui3"),
actionButton("stopme", "Stop?")
)
)
server.R
:
我更改了output$ui3
以创建 HTML 对象(不执行计算),然后观察两个事件并对其执行操作。同样,如果你不需要上面的"停止?"按钮,你可能不需要这里的第二个观察。(如果您确实使用它,请注意,要stopApp
的参数将不可见地返回给调用方。
function(input, output, session) {
output$ui1 <- renderUI({
selectInput("dataset", "firstValue", choices = c("first", "second", "third"))
})
output$ui2 <- renderUI({
actionButton("doIt", class="btn-primary", "change")
})
output$ui3 <- renderUI({
textInput("myinput", "catPath", "")
})
observeEvent(input$doIt, {
catPath <<- paste(input$dataset, "/completed", sep = "")
updateTextInput(session, inputId = "myinput", value = catPath)
})
observeEvent(input$stopme, { stopApp(catPath); })
}
做一些类似newCatPath <- runApp("path/to/dir")
.