问题标签 [shinymodules]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
894 浏览

r - 在闪亮的模块中使用 rhandsontable

应用程序

启动时,会生成一个 3 x 3 的表格,其中的值从 1 到 9 以随机顺序排列。应用程序用户可以看到的是一个空白的 3 x 3 rhandsontable,他/她将使用它来尝试猜测生成的值在哪里。当用户单击“提交”按钮时,包含正确值的单元格变为绿色,所有其他单元格保持原样。

我的问题

当用户单击按钮时,用户猜对的单元格不会变成绿色。换句话说,即使我以前让它工作,条件格式也不起作用(那是在我没有使用闪亮模块的应用程序的第一个版本中)。

我做了什么

完整项目位于以下 Github 存储库中,潜在用户可能希望克隆而不是复制和粘贴以下代码:https ://github.com/gueyenono/number_game

我的项目文件夹有 4 个文件。前两个文件是通常的ui.Rand server.R,它们本质上称为闪亮的模块(即hot_module_ui()hot_module())。模块包含在global.R文件中。最后一个文件 ,update_hot.R包含模块中使用的函数。

用户界面

此文件加载所需的包,为应用程序提供标题并调用hot_module_ui(). 该模块仅显示一个空白 3 x 3rhandsontable和一个actionButton().

服务器.R

此文件调用hot_module(),其中包含条件格式的代码。

update_hot.R

这是调用“提交”按钮时调用的函数。该函数有两个参数:

  • hot:应用程序中的handsontable
  • x:启动时生成的值

这就是函数的作用(文件的完整代码在本节末尾):

  1. 获取用户输入
  1. 将用户输入 ( user_input) 与真实值 ( x) 进行比较,并存储用户猜对的单元格的行和列索引
  1. 使用行和列索引更新当前可操作对象,并使用函数的renderer参数hot_cols()使相应单元格的背景变为绿色。请注意,我使用该hot_table()函数来更新现有rhandsontable对象。

这是完整的代码update_hot.R

全局.R

这是包含闪亮模块的文件。UI模块 (hot_module_ui()_ rHandsontableOutput _actionButtontableOutput

每当用户单击“提交”按钮时,服务器模块 ( hot_module()) 调用该update_hot()函数并尝试更新应用程序中的掌上电脑。我试图通过使用一个observeEvent和一个反应值来实现这一点react$hot_display。启动时,react$hot_display包含NAs 的 3 x 3 数据帧。单击该按钮时,它会更新为新版本的handsontable(包含用户输入和条件格式)。这是完整的代码global.R

如开头所述,单击“提交”按钮时条件格式不起作用,我不知道为什么。再次,您可以访问以下 Github 存储库中的完整代码:

https://github.com/gueyenono/number_game

0 投票
1 回答
45 浏览

shiny - 我可以从闪亮的模块中调用函数(不是模块)吗?我可以将模块反应值作为函数的参数传递吗

我对闪亮的模块很陌生。我正在尝试从我的一个模块中调用一个函数(不是模块)。我想将我当前的反应值(在我的模块中)的内容作为参数传递给函数。

该函数根据应该从“modemtab”输入函数的mrn 编号、startdate 和enddate 生成一个sql 查询命令。

这是我得到的错误: .getReactiveEnvironment()$currentContext() 中的错误:没有活动的反应上下文不允许操作。(你试图做一些只能从反应式表达式或观察者内部完成的事情。)

我知道这是因为我将反应值而不是它们的内容传递给函数。我的问题是如何传递这些反应值的内容。

我在这里包含了我的一段代码。

谢谢。

0 投票
3 回答
1811 浏览

r - 在一个闪亮的模块中创建多个选项卡

我正在使用 tabsetPanel,现在我想创建一个模块,向该面板添加多个选项卡。这是我的示例代码:

我首先想知道为什么我不能简单地用逗号分隔两个选项卡。当我执行代码时,只有我的第二个选项卡“Result2”被添加到 tabsetPanel。我也尝试使用 tagList 但没有显示任何选项卡。我究竟做错了什么?

编辑: 添加了完整的最小可重现示例 - 仅显示主应用程序的第一个选项卡和模块的第二个选项卡。

0 投票
3 回答
2527 浏览

r - 闪亮模块内的可编辑 DT

我想在闪亮的模块中有一个可编辑的 DT。当我更改 DT 中的值时,表会更新,并且数据表中的消息为空:

“未找到匹配的记录”

我的代码如下:

模块:

flexdashboard 中的应用程序:

没有模块它工作得很好,但我不能用闪亮的模块得到相同的结果。

谢谢

0 投票
1 回答
169 浏览

r - 如何使用 shiny:renderUI 和 shiny:UiOutput 生成带有闪亮模块的条件输出

这是对先前问题的轻微扩展。

注意:此解决方案现在在代码中识别并更正错字后有效。我希望这是一个有用的模式,其他人也可以使用。

我希望通过 显示不同的输出类型uiOutput,但是在模块化框架中。

到目前为止,我所拥有的是:

问题是uiOutput当前是空白的。

如果找到解决此类问题的方法,那确实会非常有帮助。

我认为只需要非常小的修改,但我对使用闪亮的模块仍然很陌生。

0 投票
1 回答
68 浏览

r - 如何安排闪亮的模块文件,以便它们在闪亮的服务器上运行?

我正在尝试在服务器上放置一个应用程序。它位于正确的位置,因为我之前放置了其他应用程序。但是,这是我第一次使用模块。

我在 ui.R 中有 UI,在 server.R 中有服务器,其余部分(所有非反应性代码 + 反应性函数作为服务器和 UI 的模块)在 global.R 中。所有这些都在同一个目录中。当我通过 runApp() 在本地运行它时,一切正常。

看起来好像服务器没有看到 global.R 文件或其他东西。我应该如何安排文件以使其工作?

用户界面

服务器.R

global.R 是工作实现。当我尝试通过浏览器连接它时,我得到

'发生了错误。应用程序无法启动。应用程序在初始化期间退出。

没有日志返回到服务器(或者我找不到它们)。有什么建议吗?

0 投票
0 回答
445 浏览

r - R Shiny - 在 Shiny 模块中以编程方式触发初始 insertUI 事件

下面的应用程序包含一个selectInput( input$month) 和一个按钮 ,Show Modal单击时会启动一个模式窗口。模式包含一个按钮,Add UI插入一些文本,Element x其中x是计数器的值,每次Add UI单击时增加 1。

打开模式窗口的应用程序启动时的屏幕截图:

在此处输入图像描述

该应用程序是模块化的,因此与模式关联的 UI 由 function 呈现,modUI相应的服务器逻辑在 function 中定义modServermodUI每次input$month更改以覆盖先前插入的文本元素时都会重新呈现。

我需要以编程方式插入第一块文本,以便在应用加载用户更改input$month时,Element 1已经在模式中呈现

在此处输入图像描述

为此,我试图让 insertUI 观察者在input$add_ui大于或等于 0 时触发 - 即observeEvent(if(req(input$add_ui) >= 0) TRUE else return(), { #insertUI expr })。但是,这不起作用,我不明白为什么。由于观察者被热切地评估,这个观察者不应该在input$add_ui完成初始化后触发吗?

每次input$month更改时,计数器也必须重置为 0,以便插入的文本元素从 开始Element 1。为此,我将以下观察者包括在modServer

req(input$add_ui == 0)检查是否已完成重新渲染,modUI并且仅在检查通过时才重置计数器。但是我觉得这使得它modServer不那么自给自足,并且想知道是否有一种不那么迂回的方式?

最后,我对模块比较陌生,想知道是否有人可以解释为什么在通过调用 counter()时不自动重置?modServerobserve(callModule(modServer, 'hi', month = input$month))如果模块有自己的环境,为什么它的价值仍然存在?

我将不胜感激任何帮助,因为我已经坚持了一段时间。

重现上述内容的代码:

0 投票
0 回答
779 浏览

r - 如何在 observeEvent 函数中调用模块(闪亮)

我正在尝试在 Shiny 中设置一个简单的纸牌游戏,因此想在 callModule(...)里面使用observeEvent(input$..,{}),所以我可以调用相同的模块并发生不同的事件。不幸的是,这似乎不起作用。

我知道,如果我只是observeEvent(input$...,{})在我的模块中使用代码确实可以工作,但我必须为所有可能的事件定义类似的模型。

0 投票
1 回答
858 浏览

r - 如何在带有模块的 navbarPage 中获取选定的 Tab-ID

我想创建一个navbarPage,其中每个tabPaneltagList每个tabPanel都是在另一个模块中创建的。

在“正常”闪亮的应用程序中,我将能够知道当前使用input$navbarPage_ID. (分配的 id 变量在哪里navbarPage_IDnavbarPage

使用模块我无法获得正确的 ID,因为它不会改变。
如何在服务器模块中获取所选选项卡的正确 ID?


示例 1,其中tabPanels在模块中创建:


示例 2,其中tabPanels在 UI 中创建并且仅tagList在模块中创建:

0 投票
1 回答
719 浏览

r - 在模块服务器函数中访问闪亮的模块 ID

我想访问传递给闪亮模块 UI 组件和模块callModule内部相应服务器组件的 id。我的意图是使用用户提供的 id 为弹出模式添加标题。