我试图在shiny中将一个observeEvent
中的赋值传递给另一个observeEvent
,除了下面的代码,我还尝试使用my_dynamic_table(),但不幸的是我无法实现我的目标。
我的目标是如果my_dynamic_table不为空,则屏幕上显示“Something 1”。
library(shiny)
library(DT)
my_dynamic_table = data.frame(NA)
shinyApp(
ui = fluidPage(
actionButton("call","Call"),
actionButton("save","Save"),
verbatimTextOutput('text'),
DT::dataTableOutput('table_out')
),
server = function(input, output, session) {
observeEvent (input$call ,{
my_dynamic_table <- mtcars
output$table_out <- DT::renderDataTable(
my_dynamic_table
) # renderDataTable : table_out
})
observeEvent (input$save,{
output$text <- renderText({
if(nrow(my_dynamic_table)>1) {
"Something 1"
}else {
"Something 2"
}
}) #renderText
}) #observeEvent
} #server
) #shinyApp
2条答案
按热度按时间8mmmxcuj1#
实现这一点的一个选项是使用
reactiveVal
或reactiveValues
:qvtsj1bj2#
虽然我确实认为使用
reactiveValues
是解决这个问题的一个好办法,但我得说在observeEvent()
中使用output
从来都不是一个好主意。我将如下重新安排代码。在observeEvent
中,我们观察操作按钮,当单击时,更新reactiveValues
。这些也是output
的中间体。