Wenn Sie nur reguläre Variablen aktualisieren (in der globalen Umgebung oder anders), weiß Shiny nicht, dass sie darauf reagieren. Sie müssen stattdessen ein Objekt reactiveValues
verwenden, um Ihre Variablen zu speichern. Sie erstellen einen mit reactiveValues()
und es funktioniert ähnlich wie eine Umgebung oder Liste - Sie können Objekte nach Namen darin speichern. Sie können entweder $foo
oder [['foo']]
Syntax für den Zugriff auf Werte verwenden.
Sobald eine reaktive Funktion einen Wert von einem reactiveValues
Objekt liest, wird der reaktive Wert, wenn dieser Wert in der Zukunft von einem anderen Wert überschrieben wird, wissen, dass er erneut ausgeführt werden muss.
Hier ist ein Beispiel (komplizierter gemacht durch die Tatsache, dass Sie load
anstatt etwas verwenden, die einen einzelnen Wert zurückgibt, wie read.table
):
values <- reactiveValues()
updateData <- function() {
vars <- load(file = "my_data_frame.RData", envir = .GlobalEnv)
for (var in vars)
values[[var]] <- get(var, .GlobalEnv)
}
updateData() # also call updateData() whenever you want to reload the data
output$foo <- reactivePlot(function() {
# Assuming the .RData file contains a variable named mydata
plot(values$mydata)
}
Wir sind auf diesem Material eine bessere Dokumentation ziemlich bald haben sollte. Danke, dass Sie uns in der Zwischenzeit begleitet haben.
Sehr hilfreich. Vielen Dank! Der Trick mit get() ist auch gut zu wissen :) – user1342178