gpt4 book ai didi

r - 在 Shiny 中的用户 session 之间共享 react 数据集

转载 作者:行者123 更新时间:2023-12-02 01:09:11 24 4
gpt4 key购买 nike

我有一个相当大的 react 数据集,它来自轮询文件,然后以预定义的时间间隔读取该文件。数据经常更新,需要不断重新加载。诚然,重新加载可以增量完成并附加到 R 中的现有对象,但不是。然而目前,这个 Action 是为 Shiny 的应用程序的每个用户完成的,尽管跨 session 的数据是相同的。

我想出一个全面的解决方案的唯一方法是确定 session 是否是第一个,并让该 session 成为通过轮询更新数据的主节点。如果仍然存在 master,则后续 session 不会进行轮询。 .

有没有更简单的方法来完成相同的结果而不处理这个主关系?

这几乎就像需要在代表所有客户端/ session 工作的全局函数内部进行响应式(Reactive)调用。

最佳答案

我希望我理解了这个问题。我假设所有 session 和所有连接的数据集都相同。即:如果一个用户更新数据集,它也应该为所有其他 session 更新?如果是这种情况,我只会简单地从数据库读取并在每次用户更新时写入该数据库。如果您有 MySQL 数据库,则可以使用它。或者,您可以在您的应用程序中使用特定于应用程序的 SQLite 数据库文件,并将其与您的 server.r 放在一起。和 ui.r文件和所有其他特定于应用程序的文件。

您仍然可以按预定义的时间间隔从数据库中读取数据。这样你就不会在 RAM 中保留数据的副本,也避免为每个 Shiny session 多次加载它。

另一种选择可能是这样。
此外,在您的 server.r文件,您放入的任何内容 shinyServer()函数将在每次创建 session 时运行(即每次用户将浏览器指向您的应用时)。任何你放在外面的东西 shinyServer()函数(例如在最开始时)只会在您的应用程序初始化时运行一次 runApp()命令。因此,如果您在 shinyServer() 之外加载数据集一次函数并将其保存到全局环境变量中,然后所有 session 都应该可以访问它。每个 session 也需要将其重新保存到全局环境中。
assign("main_df", df, envir = .GlobalEnv)

关于r - 在 Shiny 中的用户 session 之间共享 react 数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45941457/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com