在不重新启动应用程序的情况下更新Shining server.R中的数据框
关于如何在不停止和重新启动应用程序的情况下更新shiny正在使用的数据帧,有什么想法吗在不重新启动应用程序的情况下更新Shining server.R中的数据框,r,shiny,R,Shiny,关于如何在不停止和重新启动应用程序的情况下更新shiny正在使用的数据帧,有什么想法吗 我尝试将加载(file=“my_data\u frame.RData”,envir=.GlobalEnv)放入一个被动函数中,但到目前为止没有成功。只有在应用程序停止后,数据框才会更新。如果您只是更新常规变量(在全局环境中或其他情况下),Shiny不知道如何对其做出反应。您需要使用reactiveValues对象来存储变量。您可以使用reactiveValues()创建一个,它的工作原理非常类似于环境或列表—
我尝试将
加载(file=“my_data\u frame.RData”,envir=.GlobalEnv)
放入一个被动函数中,但到目前为止没有成功。只有在应用程序停止后,数据框才会更新。如果您只是更新常规变量(在全局环境中或其他情况下),Shiny不知道如何对其做出反应。您需要使用reactiveValues
对象来存储变量。您可以使用reactiveValues()
创建一个,它的工作原理非常类似于环境或列表——您可以按名称在其中存储对象。您可以使用$foo
或[['foo']]
语法来访问值
一旦反应函数从reactiveValues
对象中读取一个值,如果该值在将来被另一个值覆盖,那么反应函数将知道它需要重新执行
下面是一个示例(由于您使用的是load
而不是返回单个值的内容,如read.table
,因此变得更加复杂):
值非常有用。非常感谢。get()的诀窍也很值得一提:)
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)
}