我有一个相当大的反应数据集,它是通过轮询文件,然后在预定义时间间隔内读取该文件而得到的。数据经常更新并需要不断重新加载。无可否认,重新加载可以逐步完成并附加到R中的现有对象,但不是。不过目前,这个动作是针对闪亮应用的每个用户完成的,尽管数据在会话中是相同的。在Shiny中共享用户会话之间的反应数据集
我想出了一个有关解决方案的唯一方法是确定会话是否是第一个,并让该会话成为通过轮询更新数据的主数据。如果仍然存在master
,则后续会话不进行投票。
有没有更简单的方法来完成相同的结果,而无需处理这种主关系?
这几乎就像是需要一个全局函数内部的被动调用来代表所有客户/会话。
所有的好建议。能否在'shinyServer()'之外分配一个全局反应变量?我相信我曾尝试过,但没有成功。我会再次测试。这几乎就像我需要在'shinyServer()'外面查询/更新数据集并更新一个全局反应变量,因此当全局数据发生变化时,每个用户的视图都会更新。 – theGreatKatzul
你是对的,你不能在'shinyServer()'之外创建一个_reactive_变量,但你可以在全局R环境中创建一个变量,这个变量可以从任何函数和/或循环访问,也可以在你的Shiny服务器和反应函数。更多关于R的环境在这里:https://stat.ethz.ch/R-manual/R-devel/library/base/html/environment.html但我会先尝试数据库选项。为什么不按照我以前的建议创建一个数据库MySQL或SQLite?这样,应用程序将具有可扩展性,因为数据帧不需要完全加载到应用程序中,也不会使用RAM –