R Shiny grep javascript - PullRequest
       26

R Shiny grep javascript

1 голос
/ 27 апреля 2020

Я хочу иметь возможность использовать grepl в функции conditionalPanel.

Вот MWE. В этом тесте я проверяю, что мой ввод явно является одной из возможностей.

library(shiny)

ui <- fluidPage(

  column(5, wellPanel(
    uiOutput("test")
  )
  ),

  column(7,
         conditionalPanel("input.essai_res == 'first choice.xlsx'",
                           p("test")
         )

  )
)

server <- function(input, output) {

  output$test <- renderUI({
    selectInput("essai_res", h3("Test"), c("first choice.xlsx", "second choice.xlsx"))
  })
}

shinyApp(ui = ui, server = server)

Вместо этого я хотел бы иметь возможность проверить, что строка «first» является частью выбора для пример.

Я попытался

conditionalPanel("grepl('first', input.essai_res)", p("test"))

conditionalPanel("'first'.test(input.essai_res)", p("test"))

второй, я сделал это, чтобы попробовать команду JavaScript.

В этих 2 случаях, независимо от выбора в списке , «test» всегда появляется.

Что я могу сделать, чтобы «test» появлялся только тогда, когда «first» является частью выбора?

Я добавляю этот комментарий, чтобы ответить на вопрос ниже о контексте. Выбор поступает из этих командных строк:

files_list <- list.files(path = "Data/", pattern = "\\.xlsx$|\\.xlsm$", full.names = TRUE)
files_names <- substring(files_list, 6)
files_list <- as.list(files_list)
names(files_list) <- files_names

if (length(files_list) == 0){files_list <- "No files in the folder \"Data\""}

output$path_res <- renderUI({
    selectInput("essai_a", h3("Title"), files_list)
  })

Ответы [ 2 ]

2 голосов
/ 27 апреля 2020

Вы можете использовать includes, но учтите, что он не будет работать в IE:

library(shiny)

ui <- fluidPage(

  column(
    width = 5, wellPanel(
      selectInput("essai_res", h3("Test"), c("first choice.xlsx", "second choice.xlsx"))
    )
  ),

  column(
    width = 7,
    conditionalPanel(
      "input.essai_res.includes('first')",
      p("test")
    )
  )
)

server <- function(input, output) {
}

shinyApp(ui = ui, server = server)
1 голос
/ 27 апреля 2020

с регулярным выражением: "(/first/).test(input.essai_res) ".

...