R Shiny - 将tabPanel动态添加到tabsetPanel(使用renderUI)

     2023-03-24     52

关键词:

【中文标题】R Shiny - 将tabPanel动态添加到tabsetPanel(使用renderUI)【英文标题】:R Shiny - add tabPanel to tabsetPanel dynamically (with the use of renderUI) 【发布时间】:2013-10-28 12:33:00 【问题描述】:

我正在开发一个闪亮的应用程序,我在其中使用tabsetPanel,它是在用户输入某些特定输入时生成的。因此,我想使用renderUI 函数使tabsetPanel 出现/消失。

我现在的问题是 number of tabPanel 元素(tabsetPanel 的参数)也取决于用户输入,顺便说一下:有时我需要 1 个,其他时候我想要更多tabPanels

如何制作?我尝试在 tabsetPanel 参数中包含 conditionPanel 或包含简单的 if()... 条件,但它(并不奇怪......)不起作用。

【问题讨论】:

【参考方案1】:

给你。该代码是相当不言自明的。

library(shiny)
runApp(list(
  ui = pageWithSidebar(
    headerPanel('Dynamic Tabs'),
    sidebarPanel(
      numericInput("nTabs", 'No. of Tabs', 5)
    ),
    mainPanel(
      uiOutput('mytabs')  
    )
  ),
  server = function(input, output, session)
    output$mytabs = renderUI(
      nTabs = input$nTabs
      myTabs = lapply(paste('Tab', 1: nTabs), tabPanel)
      do.call(tabsetPanel, myTabs)
    )
  
))

【讨论】:

Ramnath,这让我很开心,效果很好!非常感谢!! 很高兴能提供帮助。如果您对代码本身有任何疑问,请在此处发布。 添加:添加选项卡后,将相同的uiOutput 添加到所有选项卡但使每个选项卡中的值唯一的正确方法是什么?或者这有什么不同?如果您添加 output$base_tab_ui 并在每个选项卡中呈现它们,则它们都为每个选项卡保留相同的 input$value。有没有办法通过不同的输入变量名称使这些唯一? @Ramnath 您将如何使用自己的内容填充这些动态选项卡中的每一个?也许,比如说,一个 data.frame 的 renderTable / tableOutput 可以使用我用来填充选项卡名称的相同对象进行过滤(即nTabs = length(lags_7)myTabs = lapply(sprintf('%s', lags_7), tabPanel))(此处可能的答案:***.com/questions/39276104/…) @d8aninja,假设您将一些地块添加到名为 myPlots 的列表中,您可以这样做:nTabs = length(myPlots); myTabs = lapply(1:nTabs, function(x)tabPanel(paste0("Tab ",x), renderPlot(myPlots[[x]]))); do.call(tabsetPanel, myTabs)【参考方案2】:

有一种方法可以动态添加tabPanels 没有 renderUI,这可能不像带有renderUI 的版本那么明显。我编写了一个函数 addTabToTabset ,它将任何(列表)tabPanel 附加到选项卡集/导航栏。

与使用 renderUI 相比,此方法具有一组优点

现有的 tabPanel 不会在每次添加新面板时重新呈现。 (更快) 因此,不会重置现有面板中的所有输入变量。 (无需变量存储解决方法) 可以单独选择面板内容的结构。 (在 lapply - renderUI 版本中,所有面板都必须有点统一。)

解决方案和代码示例可以在答案here中找到。如果需要,我也可以在此处发布代码。

【讨论】:

将所有 tabPanel 对齐一行 R Shiny

】将所有tabPanel对齐一行RShiny【英文标题】:AligningallthetabPanelsinonelineRShiny【发布时间】:2019-12-2500:34:10【问题描述】:我正在尝试将tabPanels与tabBox对齐在同一行,即使窗口大小已更改。有什么办法吗?请指教。Rshiny代码:library(... 查看详情

外部链接到 Shiny App 中的特定 tabPanel

】外部链接到ShinyApp中的特定tabPanel【英文标题】:ExternallylinktospecifictabPanelinShinyApp【发布时间】:2016-01-0610:16:09【问题描述】:在扁平的Shiny应用程序中使用锚链接相对容易-https://***.com/a/28605517/1659890。但是,外部链接是否可以... 查看详情

PrimeNG - 如何在 p-tabView 组件中动态添加和删除 p-tabPanel

】PrimeNG-如何在p-tabView组件中动态添加和删除p-tabPanel【英文标题】:PrimeNG-Howtodynamicallyaddandremoveap-tabPanelinp-tabViewcomponent【发布时间】:2017-01-1603:43:40【问题描述】:我正在进行一个需要使用p-tabView的项目。单击p-tabView中的按钮... 查看详情

在 plotly r shiny 应用程序中动态添加跟踪

】在plotlyrshiny应用程序中动态添加跟踪【英文标题】:Addingtracedynamicallyinplotlyrshinyapp【发布时间】:2020-02-2605:20:37【问题描述】:我正在尝试使用plotly在rshiny应用程序中添加一个情节。我可以在手动添加痕迹时添加它。但现在我... 查看详情

如何将 insertUI() 输出添加到 R Shiny 中的 renderText() 输出?

】如何将insertUI()输出添加到RShiny中的renderText()输出?【英文标题】:HowdoIaddinsertUI()outputtorenderText()ouputinRShiny?【发布时间】:2018-02-2821:47:35【问题描述】:我正在开发一个闪亮的应用程序来为系统开发提供自动化,我需要一种方... 查看详情

用情节 Shiny R 制作累积图形

...【问题描述】:我必须设计一个图表,在使用plotly将变量添加到ShinyR时累积变量。例如,如果我使用选择输入绘制变量x相对于日期t的图表,我添加变量并且它位于变量x的右侧,用分隔符指示它是变量y因此选择了尽可能多的变... 查看详情

r这显示了如何将datatables插件(在本例中为tabletools)添加到您的shiny应用程序中。(代码片段)

查看详情

R Shiny:如何构建动态 UI(文本输入)

】RShiny:如何构建动态UI(文本输入)【英文标题】:Rshiny:HowtobuilddynamicUI(textinput)【发布时间】:2014-04-0507:18:25【问题描述】:我正在尝试使用R闪亮构建动态textInput。用户应该在文本字段中写入,然后按下添加按钮来填充另一... 查看详情

R Shiny 根据 Userinput 动态添加 textinput 并打印 ui 输出

】RShiny根据Userinput动态添加textinput并打印ui输出【英文标题】:RShinyDynamicallyaddtextinputandprintuioutputbasedonUserinput【发布时间】:2020-03-0412:59:36【问题描述】:我正在尝试创建一个闪亮的应用程序,使用户能够添加文本框,或添加图... 查看详情

R Shiny:向数据表添加新列

】RShiny:向数据表添加新列【英文标题】:RShiny:Addingnewcolumnstodatatable【发布时间】:2021-01-2307:19:03【问题描述】:我正在使用Rshiny来创建机器学习应用程序。该应用程序使用输入小部件来创建测试观测值,然后将其馈送到随机... 查看详情

使用 R/Shiny 创建动态数量的输入元素

】使用R/Shiny创建动态数量的输入元素【英文标题】:CreatedynamicnumberofinputelementswithR/Shiny【发布时间】:2013-10-0810:55:28【问题描述】:我正在编写一个闪亮的应用程序,用于可视化我公司的保险福利计划。这是我希望发生的事情... 查看详情

Shiny R:无法显示情节

...用Rshiny来显示交互式绘图。我可以成功制作GUI并发布,但tabPanel中的图没有显示,如下图所示。有dataIused(已下载到我的笔记本电脑)。我认为问题可能是由我在server.R中预处理数据的方式引起的,但无论我尝试了什么,它仍然... 查看详情

将因子级别转换为列表以用于 R Shiny 中的动态输入

】将因子级别转换为列表以用于RShiny中的动态输入【英文标题】:ConvertfactorlevelsintolistsforuseindynamicinputinRShiny【发布时间】:2012-12-3002:23:30【问题描述】:我正在尝试将因子级别输出转换为列表,以便为RShiny中的SelectInput函数创... 查看详情

R Shiny:修改选择后保留/保留反应输入的值

...(multiple=T)选项中的选择后,我试图将用户选择的值保留在动态生成的selectInput中。每当我修改我的选择时,所有动态生成的值都会被重置 查看详情

如何在 R Shiny server.r 中访问和更改输入变量

...的ShinyUI添加一个actionButton。实际的文件保存命令取决于tabPanel的哪个选项卡打开,我可以通过tabPanelid 查看详情

使用闪亮动态地将绘图添加到网页

】使用闪亮动态地将绘图添加到网页【英文标题】:dynamicallyaddplotstowebpageusingshiny【发布时间】:2013-03-3008:08:36【问题描述】:我想创建一个使用闪亮的应用程序,该应用程序可以动态地将绘图添加到页面。可能是10个地块,也... 查看详情

将 instagram/youtube 嵌入到 Shiny R 应用程序中

】将instagram/youtube嵌入到ShinyR应用程序中【英文标题】:Embedinstagram/youtubeintoShinyRapp【发布时间】:2017-09-3003:06:45【问题描述】:我想通过点击图表来播放Instagram或Youtube视频(例如显示异常值可能是什么等)到目前为止,明确告... 查看详情

使用基于 selectInput 的动态参数将绘图从 rmarkdown 复制到 Shiny 的问题

】使用基于selectInput的动态参数将绘图从rmarkdown复制到Shiny的问题【英文标题】:IssuesinreplicatingaplotfromrmarkdowntoShinywithselectInputbaseddynamicParameter【发布时间】:2021-07-0819:44:34【问题描述】:我在rmarkdown中创建了一个绘图,我正在尝... 查看详情