首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >亮闪开关开关输出开关

亮闪开关开关输出开关
EN

Stack Overflow用户
提问于 2022-07-09 18:41:44
回答 1查看 148关注 0票数 0

在一个闪亮的应用程序中,我希望能够使用复选框或单选按钮来切换可见的输出。

目前,我只能通过创建单独的复选框ui项并观察我想要切换的每个元素的条件来实现这一点。

代码语言:javascript
复制
library(shiny)
library(shinyjs)

ui <- fluidPage(
  useShinyjs(),
  uiOutput('select1'),
  uiOutput('select2'),
  div(id='table1',tableOutput('data1')),
  div(id='table2',tableOutput('data2'))
)

server <- function(input, output){
  data1 <- data.frame(X1=1:5,
                      X2=6:10)
  
  data2 <- data.frame(Y1=1:5,
                      Y2=6:10)
  
  output$data1 <- renderTable(data1)
  output$data2 <- renderTable(data2)
  
  output$select1 <- renderUI({
    checkboxGroupInput('select1', 'Select T1',
                       choices  = 'table1',
                       selected = 'table1')
  })
  
  output$select2 <- renderUI({
    checkboxGroupInput('select2', 'Select T2',
                       choices  = 'table2'
                       )
  })
  
  observe({
    toggle(id='table1', condition = input$select1)
  })
  
  observe({
    toggle(id='table2', condition = input$select2)
  })
}

shinyApp(ui, server)

问题1当应用程序加载时,两个表都会显示,尽管只有一个表被选中。切换第二个开始,然后关闭是需要隐藏它。这是否可以更改,这样它就不会在第一次加载时显示?

问题2

我意识到我的方法效率很低,并且很可能通过包含各种选项和单一观察条件的单个checkBoxGroupInput来实现同样的目标。我在这里真的没什么经验,也搞不懂。

谢谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-09 19:28:19

toggle需要一个boolean,但是input$select返回一个字符,这可能解释了意外的行为。

使用单个checkboxGroupInput,使用%in%获取布尔值:

代码语言:javascript
复制
library(shiny)
library(shinyjs)

ui <- fluidPage(
  useShinyjs(),
  uiOutput('select'),

  div(id='table1',tableOutput('data1')),
  div(id='table2',tableOutput('data2'))
)

server <- function(input, output){
  data1 <- data.frame(X1=1:5,
                      X2=6:10)
  data2 <- data.frame(Y1=1:5,
                      Y2=6:10)
  
  output$data1 <- renderTable(data1)
  output$data2 <- renderTable(data2)
  
  output$select <- renderUI({
    checkboxGroupInput('select', 'Select table',
                       choices  = list('table1','table2'),
                       selected = 'table1')
  })
  
  observe({
    toggle(id='table1', condition = "table1" %in% input$select)
    toggle(id='table2', condition = "table2" %in% input$select)
  })
}

shinyApp(ui, server)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72923827

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档