簡體   English   中英

條件在條件面板中使用閃亮的向量

[英]condition as a vector in conditionalPanel using shiny

是否可以在condition中的conditionalPanel詢問selectedInput的輸入是否屬於向量。

很顯然,我認為condition是一個JavaScript對象,這里是一個類似的問題在這里 但是,我的問題是小玩意兒與眾不同。 我舉了一個簡單的例子:

#  ----
library(shiny)
library(shinydashboard)

var array1 = ['a','c', 'f'];
# header ----
header <- dashboardHeader(title = "Example")

#sidebar ----
sidebar <- dashboardSidebar(disable = T)

#body ----
body <- dashboardBody(

  fluidRow(
    column(
      width = 12,
      selectInput(
        inputId = "control", 
        label = "choose something:",
        choices = c("a", 
                    "b", 
                    "c", 
                    "d", 
                    "e",
                    "f"),
        multiple = TRUE
      )
    )
  ),

  conditionalPanel(
    condition = "input.control.indexOf(array1) > -1",
    textInput(inputId = "first", label = "first test")
  )

)

# all ui ----
ui <- dashboardPage(
  header = header, 
  sidebar = sidebar, 
  body = body
)

# server ----
server = shinyServer(function(input, output) {


})
# Run the application 
shinyApp(ui = ui, server = server)

我定義了一個js數組

var array1 = ['a','c', 'f'];

但是它不起作用。 任何想法?

我將FASLE變成multiple ,因為如果有重疊,我不確定您的想法是什么。

它是如何工作的,您需要首先在UI中插入javascript數組。 另外,條件中的JavaScript語法錯誤,正確的語法應為: array1.indexOf(input.control) > -1

以下示例起作用。

#  ----
library(shiny)
library(shinydashboard)

# header ----
header <- dashboardHeader(title = "Example")

#sidebar ----
sidebar <- dashboardSidebar(disable = T)

#body ----
body <- dashboardBody(
  # insert javascript code in UI -----------------------
  tags$head(
    tags$script("var array1 = ['a','c', 'f'];")
  ),

  fluidRow(
    column(
      width = 12,
      selectInput(
        inputId = "control", 
        label = "choose something:",
        choices = c("a", 
                    "b", 
                    "c", 
                    "d", 
                    "e",
                    "f"),
        multiple = FALSE
      )
    )
  ),

  conditionalPanel(
    condition = "array1.indexOf(input.control) > -1", # change code here
    textInput(inputId = "first", label = "first test")
  )

)

# all ui ----
ui <- dashboardPage(
  header = header, 
  sidebar = sidebar, 
  body = body
)

# server ----
server = shinyServer(function(input, output) {

})
# Run the application 
shinyApp(ui = ui, server = server)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM