使用HTML UI在Shiny R中下拉菜单的动态选项

时间:2014-11-17 19:35:51

标签: html r shiny

我正在尝试将ui.r转换为Shiny中的HTML ui http://shiny.rstudio.com/articles/html-ui.html我不知道如何将以下代码从我的ui.r转换为HTML。

我有一个使用以下代码的下拉列表

selectInput("data","Choose A Section:", choices=Sections[,2])

下拉列表中的输入是根据我的服务器上加载的section变量生成的。 sections变量可能会不时变化。

我知道我可以粘贴所有部分并创建示例中使用的下拉菜单http://rstudio.github.io/shiny/tutorial/#html-ui

<label>Sections:</label><br />
    <select name="dist">
      <option value="Section1">Section1</option>
      <option value="Section2">Section2</option>
      <option value="Section3">Section3</option>
      <option value="Section4">Section4</option>
    </select> 

但我不确定如何设置可能会在数据发生变化时更改的选项。是否有捷径可寻?

1 个答案:

答案 0 :(得分:3)

虽然这不是最好的答案,但它可能会让你开始。在Shiny中,我上传了.csv文件,它将使用上传文件的标题名称动态更新下拉菜单。

在server.R中,我包含

observe({

infile <- input$datfile

print(infile)
if(is.null(infile))
  return(NULL)

d <- read.csv(infile$datapath, header = T)

updateSelectInput(session, 'dropdown_1', choices = names(d))
updateSelectInput(session, 'dropdown_2', choices = names(d))

})

在ui.R中,我包括

selectInput('dropdown_1', '', ''),
selectInput('dropdown_2', '', '')

只要您可以指向数据源,我认为逻辑应该成立。例如,这将获取名为column1 data_set的字段中的唯一项目。

observe({

 data_set <- xxxxx
 updateSelectInput(session, 'dropdown_menu', choices = unique(data_set$column1))

})