我尝试使用已定义的函数来更改observeEvent
内的一些反应值。但是,如果我在shinyServer
之外定义函数,它就不起作用。下面的最小例子:
library(shiny)
set_values <- function() v$i2 <<- v$i2 + 1
ui <- shinyUI(fluidPage(
sidebarLayout(
sidebarPanel(
actionButton("inc", "Increase")
),
mainPanel(
verbatimTextOutput("text")
)
)
))
server <- shinyServer(function(input, output) {
set_values2 <- function() v$i1 <- v$i1 + 1
v <- reactiveValues(i1 = 0, i2 = 0)
observeEvent(input$inc, set_values())
observeEvent(input$inc, set_values2())
output$text <- renderPrint({
print(v$i1)
print(v$i2)
})
})
shinyApp(ui = ui, server = server)
当我尝试点击“增加”按钮时,应用程序崩溃并显示以下警告:
Warning: Unhandled error in observer: object 'v' not found
observeEvent(input$inc)
set_values2()
的变体也适用。