1
input$some_selection
が開始後に変更されると、最初のオブザーバのみが無効になります。これは、開始時に、反応値input_some_selection
がNULL
に設定され、もう更新されないためです。開始時にリアクティブ値をNULLに処理する
ラジオボタンを押すと、出力は次のようになります。
[1] "observed at point 1"
[1] "observed at point 2" # as expected until here
[1] "observed at point 1"
# why not invalidate the second observer also?
[1] "observed at point 1"
[1] "observed at point 1"
[1] "observed at point 1"
1)なぜ、この行動?それは最初のNULL
値によるものですか?
2)例を実行するには何ができますか(input$some_selection
が変更された場合、つまり依存関係を生成する場合)2番目のオブザーバを無効にしますか?
library(shiny)
ui <- fluidPage(
sidebarLayout(
sidebarPanel(),
mainPanel(
radioButtons(inputId = "some_selection",
"Distribution type:",
c("Normal" = "norm",
"Uniform" = "unif",
"Log-normal" = "lnorm"))
)
)
)
server <- function(input, output, session) {
eventlog<-c("")
input_some_selection <- reactive({
input$some_selection
})
observeEvent(input$some_selection, {
print("observed at point 1")
eventlog<<-c(eventlog,"observed at point 1")
})
observeEvent(input_some_selection, {
print("observed at point 2")
eventlog<<-c(eventlog,"observed at point 2")
})
}
shinyApp(ui = ui, server = server)
nullかどうかを確認することは常に良いです。オブザーバイベントでは、 と言うことができます。 'if(is.null(input $ some_selection))return(NULL)'ヌルが選択されている場合は、「UIで選択してください」を表示することもできます – user5249203