データをフィルタリングするために使用されるリアクティブビットのUIを持つ光沢のあるアプリがあります。私はプロットのためにデータを使用します。私のリアクションビットのUIは、変数のすべての可能な値をチェックし、selectizeInput
の選択肢として提供し、選択したすべての選択肢から始めます。私の実際のアプリケーションでは、フィルターの変更を実行するにはかなりの時間がかかるので、私はsubmitButton
を持っていますので、アプリが絶えず更新されるのを防ぐことができます。唯一の問題は、アプリケーションの初期起動時です。選択肢を動的UIにロードして選択しますが、さらなる反応性がsubmitButton
によってブロックされるため、この情報はプロットに到達しないため、空のプロットが表示されます。希望の結果を得るために必要なのは、です。これが完了すると、アプリは必要に応じて動作します。光沢のあるアプリの起動時にsubmitButtonの効果を抑制する
最初にsubmitButton
を押すことなくプロットを表示する方法を探しています。私の次のおもちゃの例では、これはsubmitButton
をactionButton
に置き換えることによって、おそらく非常に簡単に行うことができます。これは、すべての反応性がフリーズしているわけではなく、submitButton
を含む多くの問題の解決策です。しかし、私の実際のアプリでは多くの入力と反応の源があるので、actionButton
の設定とobserveEvent
でのすべての所望の効果のキャプチャは、submitButton
が唯一の問題を起動しているときには非常に面倒です。最初の起動時にプロットショーを行うことができる他の方法はありますか?それ以降は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)