我可以在Shiny的选择输入上创建一个多级数组吗?我怎样才能实现它?
这是我ui.R
中的代码,
# Site 1 options.
selectInput(
inputId = "site1",
label = "Select a first site:",
choices = siteChoices
),
# Site 2 options.
selectInput(
inputId = "site2",
label = "Select a second site:",
choices = c('None', siteChoices)
),
创建此html,
<select id="site1">
<option value="9" selected>9 - Wood Shed</option>
<option value="13">13 - V.V.</option>
<option value="18">18 - Meryls House</option>
</select>
<select id="site2">
<option value="None" selected>None</option>
<option value="13">13 - V.V.</option>
<option value="18">18 - Meryls House</option>
</select>
但我想创建它,
<select id="site1" name="sites[site1]">
<option value="9" selected>9 - Wood Shed</option>
<option value="13">13 - V.V.</option>
<option value="18">18 - Meryls House</option>
</select>
<select id="site2" name="sites[site2]">
<option value="None" selected>None</option>
<option value="13">13 - V.V.</option>
<option value="18">18 - Meryls House</option>
</select>
有可能吗?
答案 0 :(得分:1)
如果您想设置name
的{{1}}属性,可以稍微浏览selectInput
返回的结构。例如:
selectInput
通过查看上一行的输出,您可以看到输入obj<-selectInput(inputId = "site1",label = "Select a first site:",choices = letters[1:3])
str(obj)
属性的位置:
name
如您所见,名称已设定。您可以在obj$children[[2]]$children[[1]]$attribs$name<-"somename"
obj
#just the relevant part
#<select id="site1" name="somename">
# <option value="a" selected>a</option>
# <option value="b">b</option>
# <option value="c">c</option>
#</select>
定义之外定义此对象,并将ui
放在正确的位置而不是obj
。
非常确定有一种更优雅的方式可以做到这一点,但也许这可以帮助你开始。