问题标签 [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.
r - 闪亮的模块:如果服务器功能失败,则销毁模块 ui
如果模块服务器功能失败,如何显示空白 UI(或者销毁模块 UI),而不将所有 UI 代码移动到服务器功能?
简单的可重现示例:
我目前的解决方案是只有一个uiOutput()
inmy_module_ui
并在服务器函数中渲染整个 ui。我想防止这种情况发生,因为如果所有 UI 组件都放在模块服务器功能中,大型模块会变得非常混乱。
此外,我还希望避免从callModule()
破坏 UI 的返回值,而是从服务器函数中执行此操作。
谢谢!
r - 模块化 Shiny 应用程序:CSV 和图表模块
我想创建一个模块化的 Shiny 应用程序,其中一个模块 ,dataUpload
用于导入 CSV,另一个模块 ,chart
用于
- 根据 CSV 中的列名创建动态 x 和 y 下拉列表
- 根据选定的 input$xaxis, input$yaxis 创建一个绘图这会在向量分配中产生错误 invalid type/length (symbol/0)
我认为问题出在我在 chart.R 中的反应式 ggplot 上,我希望得到任何帮助 - 我在这里添加了所有信息,但我也有一个 github 存储库,如果这更容易的话,我认为这可能是一个非常棒的演示交互模块,所以我真的很感激任何帮助!
应用程序
数据上传.R
数据上传UI.R
图表.R
我相信这是需要一些小改动才能正确渲染情节的文件?
图表UI.R
shiny - 带有嵌套模块的 bs4Dash 中未显示闪亮的输出元素
编辑:该bs4Dash
软件包的作者 David Granjon 最近提供了对下面引用的 Github 问题中提出的问题的回答并将其关闭。
- 我的问题很可能与github repo中的这个问题
bs4Dash
有关,但那里没有提供答案。 - 完整的可重现代码在问题的末尾
我的目标
我正在制作一个模块化的 Shiny 应用程序,并试图用这个bs4Dash
包来做。这是应用程序的样子:
图片1
最终应用程序有几个部分(我只为这个例子做了介绍),每个部分至少包含一个bs4TabCard
. 上图中的tabcard有一个uiOutput
和一个rhandsontableOutput
元素,在服务端函数中渲染。请注意,这些都是***Output
元素。在图 1的可重现代码中(您可以在问题末尾找到),我不使用任何模块。但是,我的目标是使用多个模块,因为应用程序有可能变得非常大。对于这个简单的示例,我尝试使用两个模块:每个部分(即 each bs4TabItem
)一个模块,每个标签卡一个模块。这意味着这两个模块将始终嵌套:tabcard 模块将位于 section 模块内。
图二
问题
问题是当我实现模块时,***Output
不显示元素:
图三
令人惊讶的是***Input
显示元素。我制作了第三个包含numericInput
only 的模块并将其放在标签卡的第二个标签中。下图显示numericInput
显示没有问题:
图4
我做了我的功课
在这个问题中,报告了一个类似的问题,但没有提供任何解决方案,我的挖掘证明是不成功的。当一个输出元素被放置在bs4Dash
.
可重现的代码
图 1 的可重现代码
图 3 和图 4 的可重现代码
r - 闪亮的模块:如何使用 DT::datatables 访问 selected_rows?
当使用闪亮的模块和 DT::datatable 我想访问 selected_rows 服务器端。如果我的 DT:datatable ID 是,my_DT_table
那么我希望该对象input$my_DT_table_selected_rows
包含所选行的索引。这在没有模块的闪亮应用程序中非常有效。
但是,如果我使用模块,那么这种方法不再有效,输入对象input$my_DT_table_selected_rows
不再包含所选行的索引。
r - 通过闪亮但在外部的渲染图传递图像对象
我有一个闪亮的应用程序,它使用fileInput
并magick
读取用户选择的图像,并将其显示为 ggplot。
但是,我想将读取图像的逻辑与绘制图像的逻辑分开。我尝试将image_read
其放入内部observeEvent
,但这引发了错误The 'image' argument is not a magick image object.
我知道当我class(myplot)
在 中打印时observeEvent
,它会返回一个magick-image
对象,那么在我尝试访问时发生了什么变化active_image
?
r - Shiny 模块之间的通信
我在闪亮中创建了一个应用程序(用于说明的精简示例),其中包含一个通信无法正常工作的模块。
用户界面应通过单击“加载”按钮创建一些数据(DataPack
)(list
到目前为止有两个元素)。然后应通过模块绘制数据,而每个模块绘图的 x 轴范围应由sliderInput
ui 的 a 控制。
即使创建的数据绘制正确(仅在第一次运行时),这里是我面临的特殊问题:
- 我假设
restarting interrupted promise evaluation
警告正在创建时DataPack
尚未创建或传递给模块。因此,我理解Datapack
尚未创建但第一次单击“加载”按钮后的警告。有没有办法避免这种情况?这种行为从何而来? - 在
DataPack
通过单击“加载”按钮创建了一些数据n
(但是,初始值集value = c(0, 150)
(为什么? - 该应用程序在第一次运行后停止,不再可能再次单击“加载”按钮。为什么?
比你!
r - 使用 lapply 和 insertUI 的重复闪亮模块的顺序
我创建了一个(出于演示目的可重现的)闪亮的应用程序,其中用户界面DataPack
通过单击“加载”按钮创建了一些数据()(包含两个元素的列表)。该列表的每个元素都是通过函数中使用的模块绘制lapply
的server
。
该应用程序有效,但是,绘图以相反的顺序出现(DataPack$two
与rnorm(n)^2
之前DataPack$one
与rnorm(n)
),但预计将显示为称为(lapply(names(DataPack()), function(DataSetName) {...})
)。如何以完全给定的顺序修复此/重复调用模块,该行为的解释是什么?
r - 从模块返回输入列表的值
我有一个模块,在其中我根据反应值创建输入列表:如果此值为 3,则textInput
创建 3 s,等等。直到现在,当我需要从模块返回输入/值时,我列出了所有我的模块部分return()
末尾的输入/值(有关更多详细信息,请参阅本文)。server
但在这种情况下,由于输入的数量不是恒定的,我无法在return()
. 因此,我想创建一个可以返回的反应列表。
考虑下面的例子:
在这个例子中,点击“create ui”会生成一个textInput
s 列表。请注意,这里textInput
创建的 s 数量是恒定的(我想举个简单的例子,在要创建的输入数量中添加一些反应性并不是很有用)。
预期结果:生成textInput
s 列表后,用户可以修改其中的值并在完成后单击“更改输入”。然后,模块应将textInput
s 中的值作为向量返回。verbatimTextOutput
只是在这里验证这些值是否被很好地返回。请注意,答案应该适用于任意数量的textInput
s (这就是我尝试列表和循环的原因)。
r - 在主 APP 中使用 renderUI 或 InsertUI 时,闪亮模块服务器中的输入未更新
我的应用程序既可以自动生成 UI,也可以手动添加 ui。我在主应用程序中使用了 renderUI 和 InsertUI 来调用闪亮的模块。
即使在模块服务器中使用 renderUI 函数,闪亮模块的正常用例也能很好地更新我的值。但是当我通过调用 insertUI 和 renderUI 函数生成闪亮的模块时,输入值(selectInput,numericInput)没有更新。我不明白这是什么原因,谁能回答我的问题。
这是我的可行代码
观察闪亮模块更新输入的问题
闪亮模块的正常用例(更新工作)
r - 数据未传递到模块化闪亮 tabPanel/navbarPage 内的模块
我的可重现闪亮应用程序创建了一些数据,这些数据应通过使用lapply
. 因此,它包含主应用程序、模块化的Page_ui
/Page_server
和Module_ui
/ Module_server
。
tabPanel
当它没有在/中实现时,它作为一个独立的应用程序工作navbarPage
。然而,在后一种设置中,数据是创建的(可以通过message
代码的输出观察到),但不会通过绘图模块传递。为什么?
详细零件:
主应用程序,
navbarPage
从ui
和调用server
。(和)的模块化页面 (
tabPanel
)通过单击“加载”按钮创建一些数据 ( ,一个包含三个元素的列表),并通过(受Thomas Roh示例的启发) 调用绘图模块。navbarPage
Page_ui
Page_server
DataPack
lapply
绘图模块 (
Module_ui
和Module_server
) 用于绘制每个列表元素,DataPack
并在绘图模块 ( ) 中创建一些统计信息AnalysedPack
。
包装在 a 中时代码不起作用navbarPage
:
该代码在未包含在 a 中时有效navbarPage
(设置段落以便逐行与上面有问题的代码进行比较):
为了完整起见,代码在顺序调用模块时也可以正常工作(不带lapply
):