gpt4 book ai didi

r - 在没有 renderUI 或 uiOutput 的 navbarPage 中显示不同数量的 tabPanel

转载 作者:行者123 更新时间:2023-12-04 10:12:37 28 4
gpt4 key购买 nike

我正在尝试显示从 1 到 5 tabPanelsnavbarPage在 Shiny 。

我的代码生成了 5 个图,但我希望用户能够选择他们想要访问的数量——在每个 tabPanel 中显示一个图。 , 自然。

我有一个外部配置文件 ( config.txt ) 通过 source('config.txt') , 我可以访问 number_of_pages多变的。

例如,number_of_tabPages <- 3

我将如何在 UI.R 中进行设置? ?

tabPanel 的数量根本不能在 UI 文件中进行硬编码,因为它取决于用户指定的值,而不是使用控件。

我四处搜索,发现大多数解决这类问题的方法涉及使用 uiOutputrenderUI功能,例如 similar问题,但我不希望 UI 中的任何特殊控件进行任何选择。

这就是事情变得棘手的地方,当我们根据可能改变的值构建 UI 时。我的大脑正试图围绕做这种事情的最佳方法进行思考——我觉得它不完全符合 Shiny 希望使用 UI <--> 服务器环境与自身通信的方式。

非常感谢任何建议。

我的 UI.R 在非动态时很容易创建:

fluidRow(
column(12,
"",
navbarPage("",tabPanel("First Tab",
plotOutput("plot1")),

tabPanel("Second Tab",
plotOutput("plot2")),

tabPanel("Third Tab",
plotOutput("plot3")),

tabPanel("Fourth Tab",
plotOutput("plot4")),

tabPanel("Fifth Tab",
plotOutput("plot5"))
)
)
)
)

谢谢!

最佳答案

如果不需要用户改变tabPanel的数量交互地,但只需在应用程序启动时加载不同数量的它们,您就可以使用 do.call navBarPage 中的函数:

library(dplyr)
library(shiny)
library(ggvis)

#number of tabs needed
number_of_tabPages <- 10

#make a list of all the arguments you want to pass to the navbarPage function
tabs<-list()
#first element will be the title, empty in your example
tabs[[1]]=""

#add all the tabPanels to the list
for (i in 2:(number_of_tabPages+1)){
tabs[[i]]=tabPanel(paste0("Tab",i-1),plotOutput(paste0("plot",i-1)))

}

#do.call will call the navbarPage function with the arguments in the tabs list
shinyUI(fluidRow(
column(12,
"",
do.call(navbarPage,tabs)
)
)
)

关于r - 在没有 renderUI 或 uiOutput 的 navbarPage 中显示不同数量的 tabPanel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28401987/

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