は、input
とoutput
オブジェクトよりも柔軟性があるため、Shinyで多く使用しています。ネストされたreactiveValuesは、いずれかの子のいずれかの変更が親にリンクされた反応性をトリガーするので、トリッキーです。この問題を回避するために、2つの異なるreactiveValues
オブジェクトを作成しようとしました(同じリストに2つのオブジェクトはありませんが、2つの異なるリストがあります)、動作しているようです。私はこれの例を見つけることができず、このように動作するかどうかを調べたいと思っています。このために発生する可能性のある問題はありますか?複数のreactiveValues Shiny Appで
このアプリケーションでは、reac1
とreac2
という2つの無効値オブジェクトがあります。それぞれ、ドロップダウンにリンクされており、それぞれcolumn1
とcolumn2
です。 column1
またはcolumn2
を変更すると、リアクティブ値が最新の時刻に更新され、プロットが更新され、最新の値がreac1
およびreac2
に出力されます。
ui = fluidPage(
titlePanel("Multiple reactive values"),
sidebarLayout(
sidebarPanel(
selectInput(inputId = "column1", "Reac1", letters, selected = "a"),
selectInput(inputId = "column2", "Reac2", letters, selected = "a")
),
mainPanel(
plotOutput("plot1")
)
)
)
server = function(input, output, session) {
reac1 <- reactiveValues(asdasd = 0)
reac2 <- reactiveValues(qweqwe = 0)
# If any inputs are changed, set the redraw parameter to FALSE
observe({
input$column2
reac2$qweqwe = Sys.time()
})
observe({
input$column1
reac1$asdasd = Sys.time()
})
# Only triggered when the copies of the inputs in reac are updated
# by the code above
output$plot1 <- renderPlot({
print(paste(reac1$asdasd, 'reac1'))
print(paste(reac2$qweqwe, 'reac2'))
hist(runif(1000))
})
}
shinyApp(ui, server)
私は同意すると、光沢のある文書や例ではあまりよく書かれていませんが、reactiveValuesは他の光沢のある表現よりも便利であることがわかりました。この質問をご覧くださいhttp://stackoverflow.com/questions/39436713。あなたの特定の例では、1つのreactiveValueで動作します。あなたが参照している問題のコード例を表示できますか? –
私の変数を整理しておくために、私はreactValueの要素の1つとしてリストを持っていたいと思います。(reactelValues(somelist = list(a = 1、b = 1、c = 1))のようなものです) 。このリストには、さまざまな場所で使用される複数の要素があります。今、私がこのリストの1つの要素を更新すると、 'a'と答えると、反応は' somelist'に渡されるようです。したがって、 'b 'が変更されていなくても、' somelist $ b'を呼び出す他のチャンクもトリガされます。 – TheComeOnMan