当前位置: 首页 > 知识库问答 >
问题:

如何将条件面板设置为selectinput?

胡光霁
2023-03-14

我试图在我闪亮的应用程序中添加第二个inputpanel,其内容取决于第一个inputpanel选项的输入,我尝试使用Conditional panel,但运气不佳。

我的页面

#申请名称标题板(“dasboard”),

#带有滑块输入的边栏,用于输入箱子数量

侧边栏

sidebarPanel(
  selectInput("country", label = h4("Pays"), 
              choices = levels(as.factor(TO$Pays))),
  conditionalPanel(
    condition = "input.country == 'Allemagne'",        
    selectInput("to", label = h4("Tour opérateur"), 
              choices = levels(as.factor(as.character(TO[as.character(TO$Pays)=="Allemagne",]$TO))))),
  conditionalPanel(
    condition = "input.country == 'Angleterre'",        
    selectInput("to", label = h4("Tour Operator"), 
                choices = levels(as.factor(as.character(TO[as.character(TO$Pays)=="Angleterre",]$TO)))))

...

我发现的解决方案是为第一个输入面板的每个值创建一个条件面板,但是第二个输入面板输出只对第一个值正确。

有人有解决办法吗?

共有1个答案

宇文勇
2023-03-14

我知道下面的方法不是通过条件面板来实现的,因为我认为通过下面给出的示例来实现更简单。

首先,您可以使用updateSelectInput来更新您的条目,类似于以下内容

rm(list = ls())
library(shiny)
runApp(list(
  ui = bootstrapPage(
    selectInput('data', 'Data', c('mtcars', 'iris')),
    selectInput('Cols', 'Columns', "")
  ),
  server = function(input, output, session){
    outVar <- reactive({
      mydata <- get(input$data)
      names(mydata)
    })
    observe({
      updateSelectInput(session, "Cols",choices = outVar()
      )})
  }
))

其他方式,您可以使用renderUI来创建selectInput并像这样填充它:

rm(list = ls())
library(shiny)
runApp(list(
  ui = bootstrapPage(
    selectInput('data', 'Data', c('mtcars', 'iris')),
    uiOutput('columns')
  ),
  server = function(input, output){
    output$columns <- renderUI({
      mydata <- get(input$data)
      selectInput('columns2', 'Columns', names(mydata))
    })
  }
))

编辑:如何在renderUI中添加多个小部件您需要在tagList()中包装div,如下所示:

rm(list = ls())
library(shiny)
runApp(list(
  ui = bootstrapPage(
    selectInput('data', 'Data', c('mtcars', 'iris')),
    uiOutput('columns')
  ),
  server = function(input, output){
    output$columns <- renderUI({
      mydata <- get(input$data)
      tagList(
      selectInput('columns2', 'Columns', names(mydata)),
      selectInput('columns3', 'Columns 2', names(mydata)))
    })
  }
))

 类似资料:
  • 问题内容: 我想将配置文件名称设置为整个程序包,但我不知道如何。如果在哪里不是简单的方法,那么我必须用注释标记包和子包中的每个类。 标签不支持这样的属性,所以我不知道。 问题答案: 您可以将个人资料设置为: 文件-用于xml配置 Java配置类 在它们的每一个中,您都可以对特定的软件包使用组件扫描。

  • 问题内容: 我有一个textarea,它会随着用户输入的发送而动态地重新加载。它每隔几秒钟就会刷新一次。当此文本区域中的文本量超过文本区域的大小时,将显示滚动条。但是,滚动条并不是真正有用的,因为如果您开始向下滚动,则几秒钟后,文本区域会刷新,并将滚动条带回到顶部。我想将滚动条设置为默认显示最底部的文本。有人知道怎么做吗? 问题答案: 非常简单,使用香草javascript:

  • 问题内容: 我尝试过这种方式,但是它没有改变吗? 问题答案: 最好使用.png文件;.ico是Windows特定的。最好不要使用文件,而是使用类资源(可以包装在应用程序的jar中)。 尽管您甚至可能考虑将setIconImages用于多种尺寸的图标。

  • 我使用的是Spring Kafka 2.2.7,我已经将配置为,并使用消费消息,一切都按预期运行。 我想添加一个来记录所有消耗的消息,但发现很难配置它。留档指出可以在容器上设置RecordInterceptor,但我不确定如何获取容器的实例。 从版本2.2.7开始,您可以向侦听器容器添加RecordInterceptor;它将在调用允许检查或修改记录的侦听器之前被调用。 我查阅了Spring文档,

  • 我正在尝试在书店程序中运行getBook()方法,它允许我找到存储在AL books中的一本书,不仅如果标题和作者是正确的,而且如果其中一个是空的。于是,我写了这段代码: 我已经尝试了一些东西,并且我注意到如果我用逻辑op==替换所有的equals()调用,那么一切工作都很好。在书本课上,一切都是正确的,所有的收集器和设置器都在正确的位置。 那么,为什么我会得到这样的行为,当我几次读到用equal

  • 问题内容: 如何在HTML中执行此操作?我想做一个“其他” … 问题答案: 您不是在寻找其他东西,而是在寻找(请注意,这不是评论)。