R Shiny中observeEvent()触发后无法输出运行结果问题求助
核心问题
你编写的observeEvent()仅在回调函数中执行了数值转换计算,没有指定输出位置,因此看不到任何输出结果:
- 若需要将值打印到R/RStudio控制台,需调用
print()函数输出 - 若需要将值展示在Shiny应用的前端页面,需搭配UI输出组件和对应渲染函数
observeEvent()属于Shiny的响应式观察者,本身不会返回值,仅用来监听触发事件后执行对应的副作用操作(打印、更新组件、保存数据等),你需要的输出属于副作用操作,必须显式指定执行动作。
场景1:点击按钮后将数值打印到R控制台
library(shiny) ui <- fluidPage( sliderInput(inputId = "num", label = "Choose a number", value = 25, min = 1, max = 100), actionButton(inputId = "go", label = "Print Value") ) server <- function(input, output) { observeEvent(input$go,{ print(as.numeric(input$num)) }) } shinyApp(ui = ui, server = server)
运行后点击「Print Value」按钮,就能在启动Shiny应用的R/RStudio控制台看到对应的数值输出。
场景2:点击按钮后将数值展示在应用前端页面
需要先在UI端添加输出占位组件,再在服务端用对应的渲染函数输出:
library(shiny) ui <- fluidPage( sliderInput(inputId = "num", label = "Choose a number", value = 25, min = 1, max = 100), actionButton(inputId = "go", label = "Print Value"), # 添加文本输出占位组件 verbatimTextOutput(outputId = "num_res") ) server <- function(input, output) { observeEvent(input$go,{ output$num_res <- renderPrint({ as.numeric(input$num) }) }) } shinyApp(ui = ui, server = server)
运行后点击按钮,选择的数值就会显示在按钮下方的页面区域。
内容的提问来源于stack exchange,提问作者Bradley Brewer
相关产品推荐
相关产品推荐

