R Shiny:输入输入或按下操作按钮时刷新情节

Posted

技术标签:

【中文标题】R Shiny:输入输入或按下操作按钮时刷新情节【英文标题】:R Shiny : Refreshing plot when entering input OR pressing an action button 【发布时间】:2019-03-24 16:41:37 【问题描述】:

我对 R Shiny 还很陌生,但现在被以下问题困扰了一段时间,希望您能提供一些帮助:

我尝试刷新 R Shiny 中的绘图,如果输入了新的输入参数按下了操作按钮,则应该刷新该绘图。这应该很简单,但不幸的是我无法解决它,尽管谷歌搜索/阅读了一段时间的说明。任何建议都会被推荐。网络上的任何解决方案似乎都将整个 renderplot 函数放在了 observeEvent 函数中,但我还需要在它之外添加 renderplot 以考虑在不按下操作按钮的情况下仅输入输入的可能性。

我可以毫无困难地创建一个(渲染)图,该图要么在输入新输入时专门刷新,要么在按下按钮时专门刷新。

但是,当同时执行这两项操作时,我失败了:我首先尝试复制 renderplot 函数,包括结果输出两次,一次在 observeEvent 函数内(以考虑单击操作按钮),一次在观察事件(仅考虑刷新绘图的输入),但这只会导致灰色图表,在按下操作按钮时延迟约 10 秒后刷新。我想将通过单击操作按钮直接生成的响应式单击输入添加到观察事件之外的渲染图中,但到目前为止我无法让它运行。任何建议将不胜感激。

提前谢谢你。

【问题讨论】:

如果您的帖子中没有最少的工作示例代码,您不太可能获得太多帮助。考虑添加一个。 【参考方案1】:

像这样?:

编辑:不需要将 selectInput 传递给反应式 Vals.. 这也是一样的:

library(shiny)

ui <- fluidPage(
  sidebarLayout(
    sidebarPanel(
      selectInput(inputId="select", label="title", choices=LETTERS[1:3], selected = "A"),
      actionButton(inputId="btn", label="refresh")
    ),
    mainPanel(
      plotOutput("scatterPlot")
    )
  )
)

server <- function(input, output) 

  plotSettings <- reactiveValues()

  observeEvent(c(input$btn, input$select), 
    plotSettings$values <- runif(100,1,100)
    # plotSettings$title <- input$select
  , ignoreNULL = FALSE)

  output$scatterPlot <- renderPlot(
    plot(plotSettings$values, main=input$select)
  )


shinyApp(ui = ui, server = server)

【讨论】:

如果需要手动输入,您可能希望将 selectInput 替换为 textInput。 非常感谢,解决了!我没有考虑将 input$select 作为observeevent 的另一个触发器传递。这样,它使您可以从观察事件内部仅调用一次渲染图函数。仅供参考 - 我已对您的回答投了赞成票,但由于我的声誉仍低于 15 分,因此很遗憾没有显示赞成分数。

以上是关于R Shiny:输入输入或按下操作按钮时刷新情节的主要内容,如果未能解决你的问题,请参考以下文章

在 Shiny 中,提交按钮没有运行

用情节 Shiny R 制作累积图形

如何使用操作按钮在 R Shiny 中显示和隐藏表格输出?

如何检测何时按下 Enter 或按下提交 [重复]

在提交或操作按钮上从 Shiny UI 应用程序获取输入到服务器

javascript ReactJS:当用户停止输入时输入fire onChange(或按下Enter键)