本文介绍了在不重新启动应用程序的情况下更新SHILINY server.R中的数据框的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
您对如何在不停止和重新启动应用程序的情况下更新SHINY正在使用的数据框有什么想法吗?
我尝试将load(file = "my_data_frame.RData", envir = .GlobalEnv)
放入反应函数中,但到目前为止没有成功。数据框在应用停止后才会更新。
推荐答案
如果您只更新常规变量(在全局环境中或其他环境中),SHILINY不知道如何响应它们。您需要使用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)
}
我们应该很快就会有关于这方面的更好的文档。感谢您在此期间与我们合作。
这篇关于在不重新启动应用程序的情况下更新SHILINY server.R中的数据框的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!