我想填充selectInput的下拉菜單,用戶將上傳文件中的列中的唯一值。但問題是,我想在某些非字母順序顯示的選擇,所以我不能只用閃亮 - 以特定(非字母)順序顯示選擇輸入的選項
updateSelectInput(....., choices = sort(unique(dataframe$column)))
四個可能的選項是:經濟,優質經濟,商業和第一。我想按照這種順序顯示它們,只要它們出現在數據框中。
非常感謝您的幫助!
我想填充selectInput的下拉菜單,用戶將上傳文件中的列中的唯一值。但問題是,我想在某些非字母順序顯示的選擇,所以我不能只用閃亮 - 以特定(非字母)順序顯示選擇輸入的選項
updateSelectInput(....., choices = sort(unique(dataframe$column)))
四個可能的選項是:經濟,優質經濟,商業和第一。我想按照這種順序顯示它們,只要它們出現在數據框中。
非常感謝您的幫助!
我與來自@Symbolix提示解決了這一問題。我首先創建一個因素:
cabin <- factor(dataframe$column, levels = c("Economy", "Premium Econ", "Business", "First"))
在updateSelectInput
,我有
...., choices = levels(factor(cabin))
調用factor
再次消除了爲數據集中不存在的條件下產生的港定居。
如果您提到的4個選項集可以硬編碼到您的應用程序中,那麼您可以使用intersect
來完成此操作。假設您將用戶上傳的文件內容放入一個名爲d1
的數據框中,感興趣的列爲Class
。通過將全套選項與數據中的一組獨特水平相交,獲得選項集。
library(shiny)
shinyUI(fluidPage(
titlePanel("SelectInput using ordered unique choices from a column"),
sidebarLayout(
sidebarPanel(fileInput(inputId = "SampleFile", label = "Upload a csv")),
mainPanel(
uiOutput("Drop1"),
uiOutput("Drop2"),
textOutput(outputId = "outCLASS1"),
textOutput(outputId = "outCLASS2")
)
)
))
server.R
library(shiny)
shinyServer(function(input, output) {
d1 = reactive({
if(is.null(input$SampleFile)){return(NULL)
} else {d1 = read.csv(input$SampleFile$datapath)
return(d1)} })
AllOptions = c("economy", "premium economy", "business", "first")
OptionSet1 = reactive({intersect(AllOptions, levels(d1()$Class)) })
output$Drop1 = renderUI({ selectizeInput(inputId = "CLASS1", label = "Pick a class", choices = OptionSet1())})
OptionSet2 = reactive({intersect(AllOptions, levels(d1()$Category2)) })
output$Drop2 = renderUI({ selectizeInput(inputId = "CLASS2", label = "Pick a class", choices = OptionSet2())})
output$outCLASS1 = reactive({input$CLASS1})
output$outCLASS2 = reactive({input$CLASS2})
})
不確定,但你試過因素(c(「經濟」,「優質經濟」,「商業」,「第一」),水平= c(「經濟」,「高端經濟」,「 「first」))' –
感謝您的回覆。我嘗試過'選擇=因素(獨特(數據框$ Column),水平= c(「經濟」,「高級經濟」,「商業」,「第一」),有序= TRUE',然而,在下拉菜單中,顯示列中存在的級別的索引 –
在'data.frame $ Column'上設置因子級別,然後在下拉列表中使用'choices = as.character(dataframe $ Column)' – SymbolixAU