gpt4 book ai didi

r - 抑制 submitButton 对 shiny app 启动的影响

转载 作者:行者123 更新时间:2023-12-04 03:14:24 25 4
gpt4 key购买 nike

我有一个 Shiny 的应用程序,带有一个响应式(Reactive)的 UI,用于过滤我的数据。然后我使用数据进行绘图。我的 UI 响应式位检查变量的所有可能值,将它们作为选项提供在 selectizeInput 中并从所有选定的选项开始。在我的实际应用程序中,过滤器中的更改可能需要相当长的时间才能运行,所以我有 submitButton以防止应用程序不断更新。唯一的问题是应用程序的初始启动:它将选项加载到动态 UI 中并选择它们,但是因为进一步的 react 被 submitButton 阻止了,此信息未到达绘图,因此显示为空绘图。只需点击 sumbitButton 即可获得所需的结果。一次。完成此操作后,应用程序将按预期运行。

我正在寻找一种无需按 submitButton 即可开始显示情节的方法.在我下面的玩具示例中,这可能很容易通过替换 submitButton 来完成。用actionButton这样并不是所有的 react 都被卡住,这似乎是许多涉及 submitButton 的问题的解决方案。在其他问题中。然而,在我的实际应用程序中有许多输入和 react 源,因此配置 actionButton并在 observeEvent 中捕获所有需要的效果当 submitButton 时,s 会很乏味。完成所有这些,唯一的问题是启动。有没有其他方法可以在第一次启动时显示情节,但请遵循 submitButton从那以后的行为?

示例应用:

library(shiny)
library(ggplot2)

ui <- fluidPage(
sidebarLayout(
sidebarPanel(
uiOutput("Cylselectui"),
submitButton("Apply changes")
),
mainPanel(
plotOutput("Carsplot")
)
)
)


server <- function(input, output) {
output$Carsplot <- renderPlot({
plotdata <- subset(mtcars, cyl %in% input$Cylselection) #Filter based on cyl

ggplot(plotdata, aes(x = mpg, y = hp, colour = factor(cyl))) + #Create plot
geom_point()
})

output$Cylselectui <- renderUI({ #Create the cyl selectize ui based on the values of cyl that are in the data
selectizeInput(
'Cylselection', 'Select by Cylinder',
choices = sort(unique(mtcars$cyl)),
selected = sort(unique(mtcars$cyl)),
multiple = TRUE
)
})
}

shinyApp(ui = ui, server = server)

最佳答案

您可以使用 reactive 检查输入是否为 null(第一次),然后提供您的默认值:

  Cylselection <- reactive({
if(is.null(input$Cylselection))
sort(unique(mtcars$cyl))
else
input$Cylselection})

output$Carsplot <- renderPlot({
plotdata <- subset(mtcars, cyl %in% Cylselection()) #Filter based on cyl
ggplot(plotdata, aes(x = mpg, y = hp, colour = factor(cyl))) + #Create plot
geom_point()
})

更优雅的是将你的数据子集放在响应式(Reactive)中:

  plotdata <- reactive({
if(is.null(input$Cylselection))
mtcars
else
subset(mtcars, cyl %in% input$Cylselection)})

output$Carsplot <- renderPlot({
ggplot(plotdata(), aes(x = mpg, y = hp, colour = factor(cyl))) + #Create plot
geom_point()
})

关于r - 抑制 submitButton 对 shiny app 启动的影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42372109/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com