在闪亮的 server.R 中更新数据框而不重新启动应用程序

Posted

技术标签:

【中文标题】在闪亮的 server.R 中更新数据框而不重新启动应用程序【英文标题】:Update a data frame in shiny server.R without restarting the App 【发布时间】:2013-01-31 20:52:47 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

如果您只是更新常规变量(在全局环境中或其他),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)

我们应该很快就会有关于这些东西的更好的文档。感谢您在此期间与我们相处。

【讨论】:

非常有帮助。谢谢! get() 的技巧也很值得了解 :)

以上是关于在闪亮的 server.R 中更新数据框而不重新启动应用程序的主要内容,如果未能解决你的问题,请参考以下文章

R 用 updateSelectInput 反应闪亮

如何在闪亮的数据表中保存排序?

如何连接数据框而不丢失列名中的括号?

闪亮:更新输入而不触发反应?

如何修改多个数据框而不列出它们然后使用 lapply?

单击保存按钮后如何在用户窗体中添加依赖于另一个组合框的excel vba组合框而不影响清除数据功能