2015-05-23 68 views
2

我可以在Shiny的選擇輸入上創建多個級別的數組嗎?我怎樣才能實現它?R 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) 
    ), 

它創建這個網站,

<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> 

是它可能?

回答

1

如果你想設置你的selectInputname屬性,你可以瀏覽一下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放在正確的位置,而不是selectInput(...)

很確定有一個更優雅的方式來做到這一點,但也許這可以幫助你開始。

相關問題