在没有重新启动应用程序的情况下更新闪亮的server.R中的数据框

时间:2013-02-15 19:45:28

标签: r shiny

有关如何在不停止并重新启动应用程序的情况下更新闪亮使用的数据框的任何想法?

我尝试将load(file = "my_data_frame.RData", envir = .GlobalEnv)放入反应函数中,但到目前为止还没有运气。在应用程序停止之前,数据框不会更新。

1 个答案:

答案 0 :(得分: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)
}

我们应该很快就会有更好的文档。感谢您同时与我们合作。