我对R Shiny还是很陌生,但是一段时间以来一直遇到以下问题,希望您能提供一些帮助:
我尝试刷新R Shiny中的图,如果输入了新的输入参数,则应该刷新该图。 OR 这应该很简单,但是尽管谷歌搜索/阅读了一段时间的指令,但不幸的是我还是无法解决。任何建议都将被推荐。网上的任何解决方案似乎都将整个renderplot函数放到observeEvent函数中,但是我还需要在它之外添加renderplot,以解决只按输入而不输入操作按钮的可能性。
我毫不费力地创建了一个(渲染)图,该图要么在输入新输入时专门刷新,要么在按下按钮时专门刷新。
但是,当同时执行两项操作时,我失败了:我首先尝试在一次watchEvent函数中两次复制包括结果输出在内的renderplot函数(以考虑单击操作按钮),一次在watchEvent(仅考虑刷新图的输入),但这只会导致显示灰色的图形,该图形在按下操作按钮约10秒后会刷新。我想将通过单击操作按钮生成的反应式单击输入直接添加到observe event之外的renderplot上,但是到目前为止,我无法运行它。任何建议将不胜感激。
谢谢。
答案 0 :(得分: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)