R 创建可折叠列的标准方法
我想以一种直观的方式在R.R中实现可折叠列,并在R 创建可折叠列的标准方法,r,twitter-bootstrap,shiny,flexbox,R,Twitter Bootstrap,Shiny,Flexbox,我想以一种直观的方式在R.R中实现可折叠列,并在UI.R中保留尽可能多的非交互式UI代码 我想出了几种制作可折叠柱的方法。一种是将整个UI放入对server.R中renderUI的调用中,并根据输入条件呈现不同的布局,如下所示: shinyApp( ui = fluidPage( uiOutput("panels"), checkboxInput("showSidePanel", "Show Side Panel", TRUE) ), s
UI.R
中保留尽可能多的非交互式UI代码
我想出了几种制作可折叠柱的方法。一种是将整个UI放入对server.R
中renderUI
的调用中,并根据输入条件呈现不同的布局,如下所示:
shinyApp(
ui = fluidPage(
uiOutput("panels"),
checkboxInput("showSidePanel", "Show Side Panel", TRUE)
),
server = function(input, output) {
output$panels <- renderUI(
if (input$showSidePanel) {
fluidRow(
column(4,
wellPanel(h2("Side Panel"))
),
column(8,
wellPanel(h2("Main Panel"))
)
)
}
else
wellPanel(h2("Main Panel")))
}
)
这是可扩展的,虽然UI仍然完全驻留在服务器代码中,但至少在逻辑上是分开的。然而,在我的服务器代码中加入一堆非交互式UI只是为了使其可折叠(我的实际侧面板由许多UI元素组成),这似乎还是违反直觉的。有没有一个简单的或合乎逻辑的方法来做到这一点,我错过了?如果可能的话,我希望继续使用
fluidPage
/fluidRow
/列
方法来处理UI。您是否愿意使用conditionalPanel()
?如果您不需要响应内容,而只需显示/隐藏功能,则可能会更容易隐藏一个面板/列,我希望其他面板/列增长以填充空间。然而,我的理想解决方案是与条件面板
的形式相同的东西,只是具有我想要的功能。我可能会尝试开发类似的东西。您可以使用shinyjs
包中的hide
和show
函数来隐藏或显示列。您可以为ui中的每个元素提供一个id并调用该函数。这可能是您是否愿意使用conditionalPanel()
?如果您不需要响应内容,而只需显示/隐藏功能,则可能会更容易隐藏一个面板/列,我希望其他面板/列增长以填充空间。然而,我的理想解决方案是与条件面板
的形式相同的东西,只是具有我想要的功能。我可能会尝试开发类似的东西。您可以使用shinyjs
包中的hide
和show
函数来隐藏或显示列。您可以为ui中的每个元素提供一个id并调用该函数。它可能是某种类似于
shinyApp(
ui = fluidPage(
fillRow(flex = c(NA, 1), height = 100,
uiOutput("sidePanel"),
wellPanel(h2("Main Panel"))
),
checkboxInput("showSidePanel", "Show Side Panel", TRUE)
),
server = function(input, output) {
output$sidePanel <- renderUI(
if (input$showSidePanel) {
wellPanel(h2("Side Panel"))
} else {
NULL
}
)
}
)