12

アプリケーションを停止して再起動せずに、光沢のあるデータ フレームを更新する方法についてのアイデアはありますか?

load(file = "my_data_frame.RData", envir = .GlobalEnv)リアクティブ関数の中に入れてみましたが、今のところうまくいきません。アプリが停止されるまで、データ フレームは更新されません。

4

1 に答える 1

21

通常の変数を (グローバル環境で、またはそれ以外で) 更新しただけでは、Shiny はそれらに反応することを知りません。reactiveValues代わりにオブジェクトを使用して変数を保存する必要があります。を使用して作成するreactiveValues()と、環境やリストのように機能します。オブジェクトを名前で保存できます。$fooまたは[['foo']]構文を使用して、値にアクセスできます。

リアクティブ関数がオブジェクトから値を読み取ると、reactiveValuesその値が将来別の値で上書きされた場合、リアクティブ関数は再実行する必要があることを認識します。

load以下に例を示します (のような単一の値を返すものの代わりに使用しているという事実により、より複雑になっています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)
}

この件に関するより良いドキュメントをすぐに作成する必要があります。しばらくお待ちいただきますようお願いいたします。

于 2013-02-16T00:31:06.950 に答える