本文介绍了在不重新启动应用程序的情况下更新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中的数据框的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-06 09:12