在闪亮的 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 中更新数据框而不重新启动应用程序的主要内容,如果未能解决你的问题,请参考以下文章