gpt4 book ai didi

r - 在 Shiny 的应用程序中使用 session 参数

转载 作者:行者123 更新时间:2023-12-04 18:40:51 25 4
gpt4 key购买 nike

RStudio reference docs 中所述, Shiny 的服务器函数可以选择包含 session 作为参数(例如 function(input, output, session))。 session 对象是可用于访问与 session 相关的信息和功能的环境。

我从不在我的应用程序中使用这个参数,可能会遗漏一些东西。

session参数有哪些实际用途?

最佳答案

这是我尝试的概述:

用例列表:

  • 定制的用户界面
  • 聊天室
  • 游戏
  • Javascript 通信
  • session 结束时触发函数
  • 模块化 Shiny 应用的全局响应值
  • 更新输入

session 结束时触发函数

例如关闭数据库连接,参见 How to implement a cleanup routine in R Shiny? .

当浏览器/ session 关闭时停止 Shiny 的应用程序:

How to stop running shiny app by closing the browser window?

自定义用户界面

用户界面将取决于调用它的设备。是手机还是pc,屏幕分辨率等。

在用户界面中使用流畅的页面会有所帮助,但当然也有限制。

使用 session$clientData$output_{OUTPUT_ID}_heightsession$clientData$output_{OUTPUT_ID}_width您可以跟踪您的输出是如何为您的用户呈现的。您可以进行实时调整(如果情节太小,请不要插入我的大标题)。或者你可以追踪找到用户最常用的 UI 设置后,调整您的 UI。

用户互动

您可以在该 session 中/为该用户创建一个本地/ secret 的 reactiveValue() 并且您可以设置服务器函数外部的 reactiveValues() 用于可跨用户/ session 访问的“全局信息”。

通过这种方式,您可以跨 session 共享信息,但也可以为某些用户隐藏特定值。

用例示例:聊天室 https://shiny.rstudio.com/gallery/chat-room.html

用例示例:游戏 Can R Shiny display different views for two simultaneous users, interacting with one another?

在模块之间共享数据

如评论中所述,目前有一个开放赏金要求拥有模块化 Shiny 应用程序的全局 react 值。参见 Shiny modules: Destroy module ui if server-function fails

https://appsilon.com/super-solutions-for-shiny-architecture-1-of-5-using-session-data/?nabe=4634331497365504:0 .

最后,还有一些您间接使用的功能,因为有很好的包装函数/包。

向 Javascript 发送消息

(对此有很好的包装器。例如 shinyjs 包)。

如果你想在你的应用程序中集成 javascript 并从 shiny 向 javascript 发送消息,你可以使用session:sendCustomMessage().

参见,例如 http://www.blog.rdata.lu/post/2017-09-16-communication-between-r-and-d3js/https://shiny.rstudio.com/articles/js-send-message.html .

更新输入

您可以使用 session$sendInputMessage(inputId, message) 来更新输入。但是同样已经有更方便的包装函数,例如updateTextInput()

但对于没有辅助函数的输入,记住这一点很有趣。

总体概述:

https://shiny.rstudio.com/reference/shiny/latest/session.html

关于r - 在 Shiny 的应用程序中使用 session 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58943576/

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