如何在没有全局的情况下将变量从 server.R 传递到 ui.R?
How to pass a variable from server.R to ui.R in shiny without global?
我尝试了不同的方法来在 server.R 中存储变量并在 ui.R 中使用相同的变量但没有成功。(除了声明它是全局的)有没有办法传递变量从 server.R 到 ui.R?只要可行,这可能是一种 hacky 方式。
这可能对你有用(直接取自我的Shiny tips 'n tricks list):
在 UI conditionalPanel()
中使用来自服务器的变量
在UI中使用条件面板时,条件通常是使用输入值的表达式。但是,如果您想使用条件面板,条件面板具有不一定与输入字段直接相关的更复杂条件,会发生什么情况?此示例说明如何在服务器代码中定义可在 UI 中使用的输出变量。另一种方法是使用 shinyjs
包中的 show() 和 hide() 函数。
library(shiny)
ui <- fluidPage(
selectInput("num", "Choose a number", 1:10),
conditionalPanel(
condition = "output.square",
"That's a perfect square!"
)
)
server <- function(input, output, session) {
output$square <- reactive({
sqrt(as.numeric(input$num)) %% 1 == 0
})
outputOptions(output, 'square', suspendWhenHidden = FALSE)
}
shinyApp(ui = ui, server = server)
我尝试了不同的方法来在 server.R 中存储变量并在 ui.R 中使用相同的变量但没有成功。(除了声明它是全局的)有没有办法传递变量从 server.R 到 ui.R?只要可行,这可能是一种 hacky 方式。
这可能对你有用(直接取自我的Shiny tips 'n tricks list):
在 UI conditionalPanel()
中使用来自服务器的变量在UI中使用条件面板时,条件通常是使用输入值的表达式。但是,如果您想使用条件面板,条件面板具有不一定与输入字段直接相关的更复杂条件,会发生什么情况?此示例说明如何在服务器代码中定义可在 UI 中使用的输出变量。另一种方法是使用 shinyjs
包中的 show() 和 hide() 函数。
library(shiny)
ui <- fluidPage(
selectInput("num", "Choose a number", 1:10),
conditionalPanel(
condition = "output.square",
"That's a perfect square!"
)
)
server <- function(input, output, session) {
output$square <- reactive({
sqrt(as.numeric(input$num)) %% 1 == 0
})
outputOptions(output, 'square', suspendWhenHidden = FALSE)
}
shinyApp(ui = ui, server = server)