RStudio Shiny 动态选择

标签 r shiny rstudio

在我的 RStudio Shiny 中,我在 server.R 中得到了 selectInput,在 ui.R 上我得到了 Tags 语句来更改选择框的宽度和高度。

它在页面加载时起作用,但当我进入单一类型时它会恢复为默认大小。有什么想法如何解决吗?

在 ui.R 上

# [...]
  ,div(class="span6"
   ,radioButtons("viz_multiple", "Select Type:",
          c("Select From List (can use Up/Down + Enter)" = "multiple",
            "Search One (Delete then type keyword)"  = "single")
    )
   )
  )
  ,div(class='row-fluid'
  ,div(class='span12', uiOutput("image_list"))
  ,tags$head(tags$style(type="text/css", "select#iimage_list             { width: 1000px; height: 40px; }"))
  )
 # [...]

在服务器上。R

# [...]

output$image_list <- renderUI({
  imagelist = image_ls()
  iimage_list <- as.vector(sort(unique(as.character(imagelist)),decreasing=TRUE))
  length_list = length(iimage_list)
  selectInput("iimage_list",paste0("samples (",length_list,")"),choices=iimage_list, selectize = input$viz_multiple == 'single')
})
# [...]

当用户从多个切换到单个时,有什么想法如何应用tags命令吗?

最佳答案

您还需要动态添加 css。要定位 selectize 输入,您需要定位 select#dataset + .selectize-control 而不是 select#dataset

图书馆( Shiny )

runApp(list(
  ui = bootstrapPage(
    radioButtons("viz_multiple", "Select Type:",
                 c("Select From List (can use Up/Down + Enter)" = "multiple",
                   "Search One (Delete then type keyword)"  = "single")
    )
    , uiOutput("myUI")
  ),
  server = function(input, output){
    output$myUI <- renderUI({
      myCSS <-if(input$viz_multiple == 'single'){
        tags$style(type="text/css", "select#dataset + .selectize-control{ width: 1000px; height: 40px; }")
      }else{
        tags$style(type="text/css", "select#dataset { width: 1000px; height: 40px; }")
      }
      tagList(
        selectInput('dataset', 'Choose Dataset', c('mtcars', 'iris'), selectize = (input$viz_multiple == 'single'))
        , myCSS
      )
    })
  }
))

或者有两个单独的CSS条目,一个用于select,一个用于selectize:

library(shiny)
runApp(list(
  ui = bootstrapPage(
    radioButtons("viz_multiple", "Select Type:",
                 c("Select From List (can use Up/Down + Enter)" = "multiple",
                   "Search One (Delete then type keyword)"  = "single")
    )
    , uiOutput("myUI")
    , tags$style(type="text/css", "select#dataset + .selectize-control{ width: 1000px; height: 40px; }")
    , tags$style(type="text/css", "select#dataset { width: 1000px; height: 40px; }")
  ),
  server = function(input, output){
    output$myUI <- renderUI({
      selectInput('dataset', 'Choose Dataset', c('mtcars', 'iris'), selectize = (input$viz_multiple == 'single'))
    })
  }
))

关于RStudio Shiny 动态选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26998396/

相关文章:

r - 将数据框列表转换为数据表

r - 使用带有 transition_time 的 geom_map 得到错误 : Error in insert_points(polygon$x, polygon$y, splits, n)

r - 限制ggplot2轴而不删除数据(超出限制): zoom

css - 将背景图像添加到 Shiny NavBarPage

r - 在 knitr/markdown 中更改代码块颜色

php - 仅knitr、rmarkdown、pander : Minimal md -> html for <body> . ..</body>

r - 在 R 中创建一个循环,根据存储的变量名称来命名(保存)文件

R Shiny - 当值更改时隐藏输出

r - 1个主面板和2个侧面板

r - 数据表中的串扰包错误