以下是摘录,问题是:如何在observeEvent()
内reactive()
更改a
值?
编辑:真正的问题是,“没有reactiveValues()
吗?
ui <- fluidPage(
actionButton("btn_change", "Change Values"),
actionButton("btn_print","Print values")
)
server <- function(input, output) {
a <- 1
data <- reactive({
observeEvent(input$btn_change, {
a <- a + 1
})
a
})
observeEvent(input$btn_print, {
print(paste("data = ", data()))
})
}
shinyApp(ui, server)
答案 0 :(得分:2)
编辑:您修改了问题,询问是否可以没有reactiveValues。在这种特定情况下,是的,因为每次单击时,动作按钮的值都会增加1。本帖子底部显示了更广泛适用的
reactiveValues
之前的答案。
library(shiny)
ui <- shinyUI(
fluidPage(
actionButton("btn_change", "Change Values"),
actionButton("btn_print","Print values")
)
)
server <- function(input, output) {
a <- 1
data <- reactive({
a + input$btn_change
})
observeEvent(input$btn_print, {
print(paste("data = ", data()))
})
}
shinyApp(ui, server)
EDIT。根据您的评论修改了解决方案
我认为你要做的是每次点击按钮时增加被动的值。您可以通过使用reactiveVal来实现。您可以通过x()
获取其价值,并将其值设置为x(1)
,其中x
是被动值的名称。
请注意,您可以在反应中使用此reactiveval()。无论何时单击按钮,反应值都会增加,这将触发您的反应计算。
library(shiny)
ui <- shinyUI(
fluidPage(
actionButton("btn_change", "Change Values"),
actionButton("btn_print","Print values")
)
)
server <- function(input, output) {
a <- 1
data <- reactiveVal()
data(a)
observeEvent(input$btn_change, {
old_value = data()
data(old_value+1)
})
your_reactive <- reactive({
data()*2+1
})
observeEvent(input$btn_print, {
print(paste("data = ", your_reactive()))
})
}
shinyApp(ui, server)