来自Multiple selectInput的R有光泽的conditionalPanel

时间:2018-04-11 13:12:39

标签: r shiny

在我的闪亮应用程序中,我有一个selectInput,其中multiple = True。这允许从列表中选择几个变量。 我想为列表的每个变量添加conditionalPanel,只有在选择变量时才会显示。

例如:

shinyUI(fluidPage(

    sidebarPanel(     
      selectInput("variables", "Choose  variables" , choices = c("VAR1", "VAR2", "VAR3", "VAR4"), multiple=TRUE),

      conditionalPanel( 
        condition = " input.variables == 'VAR1' ",
        selectInput("VAR1", "values", c("A", "B", "C"))
        )   
    ),
    mainPanel(
      )
    )

问题是因为我选择了几个变量我的条件输入$ variables =='VAR1'是假的,因为input.variables包含几个值。什么条件可以在这里工作?在R中,条件为:%input.variables

中的“VAR1”%

谢谢

4 个答案:

答案 0 :(得分:0)

您可以使用||创建多个条件,因此代码如下所示:

conditionalPanel(
         condition = c("input$variables == 'VAR1' || input$variables == 'VAR2'"),
#here your follwing selectinput

这意味着如果您的输入是VAR1或其VAR2或两者,则条件面板接受并进入selectinput。你也可以使用&&制作VAR1和VAR2等。

此外,如果您想为每个变量创建一个条件面板,请不要使用multiple = TRUE,并更改为单个选择selectinput。

答案 1 :(得分:0)

将选定的变量加入到字符串中,然后进行模式匹配检查。这应该工作

selected <- paste(input$variables, collapse=",")
if ("VAR1" %in% selected)

答案 2 :(得分:0)

您要查找的Javascript条件是

input.variables.indexOf('VAR1') > -1

答案 3 :(得分:0)

我也搜索了此问题,并发现Javascript必须遵循该条件。 对于也在寻找这个的任何人,洛朗在上面给出了正确的答案。

我们还可以为您提供以下条件:

conditionalPanel(condition = "input.variables.includes('VAR1')")