R闪亮:observeEvent和eventReactive的不同行为
Posted
技术标签:
【中文标题】R闪亮:observeEvent和eventReactive的不同行为【英文标题】:R shiny: different behaviours of observeEvent and eventReactive 【发布时间】:2020-12-04 05:40:47 【问题描述】:下面闪亮的应用程序显示了一个使用rhandsontable()
构建的可编辑表格。
问题:您能解释一下为什么每当对数据表进行编辑时,控制台就会打印"ping"
,而从不打印"pong"
。
library(shiny)
ui <- fluidPage(
rhandsontable::rHandsontableOutput(
outputId = "data")
)
server <- function(input, output, session)
data <- data.frame(a = 1, b = 2, c = 3)
output$data <- rhandsontable::renderRHandsontable(
rhandsontable::rhandsontable(
selectCallback = TRUE,
data = data)
)
observeEvent(input$data$changes$changes,
print("ping")
)
edits <- eventReactive(input$data$changes$changes,
print("pong")
)
shinyApp(ui = ui, server = server)
【问题讨论】:
【参考方案1】:这是因为 edits()
此后没有被调用,所以 shiny
认为你不需要它,因此没有理由对其进行任何工作,你需要添加它应该去的地方或你想要做的事情用它:
library(shiny)
ui <- fluidPage(
rhandsontable::rHandsontableOutput(
outputId = "data")
)
server <- function(input, output, session)
data <- data.frame(a = 1, b = 2, c = 3)
output$data <- rhandsontable::renderRHandsontable(
rhandsontable::rhandsontable(
selectCallback = TRUE,
data = data)
)
observeEvent(input$data$changes$changes,
print("ping")
)
edits <- eventReactive(input$data$changes$changes,
print("pong")
)
observe(
edits()
)
shinyApp(ui = ui, server = server)
【讨论】:
以上是关于R闪亮:observeEvent和eventReactive的不同行为的主要内容,如果未能解决你的问题,请参考以下文章
来自 selectInput 的具有多个条件的闪亮 R 观察事件
无法使用 observeEvent 和 eventReactive 更新闪亮应用程序中的输入