RStudio闪亮动态选择
Posted
技术标签:
【中文标题】RStudio闪亮动态选择【英文标题】:RStudio Shiny dynamic selectize 【发布时间】:2015-01-15 21:10:27 【问题描述】:在我的 RStudio Shiny 中,我的 selectInput
在我的 server.R
中,在 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')
)
# [...]
当用户从multiple
切换到single
时,任何想法如何应用tags
命令?
【问题讨论】:
【参考方案1】:您还需要动态添加 css。要定位选择输入,您需要定位 select#dataset + .selectize-control
而不是 select#dataset
图书馆(闪亮)
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'))
)
))
【讨论】:
我复制并粘贴了这个新版本,但它的行为与原始版本没有什么不同。如果我删除ui.R
中相应的tags
语句,并在您的答案中使用新版本,同样的行为......
您需要提供可重现的代码,否则很难进一步评论。
在加载带有您答案中的版本的页面时,它确实将其调整为正确的大小,这让我认为它正在正确应用 tagList。但是当我更改加载页面中的input$viz_multiple
选项时,它会恢复到默认大小...以上是关于RStudio闪亮动态选择的主要内容,如果未能解决你的问题,请参考以下文章
闪亮的应用程序中的ggplotly不断崩溃(Rstudio)
Rstudio闪亮的renderDataTable标题多行?