12

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

我尝试load(file = "my_data_frame.RData", envir = .GlobalEnv)在反应函数内部放置一个,但到目前为止还没有运气。数据框在应用停止后才会更新。

4

1 回答 1

21

如果您只是更新常规变量(在全局环境中或其他情况下),Shiny 不知道对它们做出反应。您需要使用reactiveValues对象来存储变量。您使用创建一个reactiveValues(),它的工作方式与环境或列表非常相似——您可以在其中按名称存储对象。您可以使用$fooor[['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 回答