2016-08-15 3 views
0

Ich mag würde eine Benutzereingabe eine Datei (CSV) haben und aus dieser Datei, zwei selectizeInputs mit den Spaltennamen der CSV-bevölkern werden. Man wird den Benutzer auffordern, die von den Spalten aus ihrer hochgeladenen Datei ist die y-Variable und welche der Spalt ist das x-Variable. Das konnte ich tun.mehr selectizeInput von FileInput-

Was kann ich nicht tun, ist die folgende: Ich mag die Auswahl aus ihrem y-Variable erhalten von ihren x-Variable Entscheidungen in dem x-Variable Dropdown-Menü zu verschwinden.

Auch ich habe die answer to this question verwendet, um zu versuchen, zu helfen, aber sie verwenden nicht die Werte von einem fileInput. Daher kann ich meinen unten stehenden Code nicht zum Funktionieren bringen. Danke für jeden Rat/Hilfe, die Sie geben können.

ui<- fluidPage(

    titlePanel("Test"), 

    sidebarPanel(
    fileInput(inputId = "file1", label = "Upload File"), 
    selectizeInput(
     "sampleyvars", "Y-vars", choices = NULL, multiple = FALSE 
    ), 
    selectizeInput(
     "samplevars", "X-vars", choices = NULL, multiple = TRUE 
    ) 

), 

    mainPanel(h3("Nothing special") 
) 
) 

server<- function(input, output, session) { 

    observe({ 
    file1 <- input$file1 
    if(is.null(file1)){return()} 
    dataSet <- read.csv(file=file1$datapath) 

    vals1<-input$sampleyvars 
    vals2<-input$samplevars 

    updateSelectizeInput(session, "sampleyvars", 
         choices = colnames(dataSet)[! vals1 %in% vals2]) 
    updateSelectizeInput(session, "samplexvars", 
         choices =colnames(dataSet)[! vals2 %in% vals1]) 
    }) 

} 

shinyApp(ui = ui,server = server) 

Antwort

0

Sie haben falsch ID des Widgets für X-Variable: samplevars statt samplexvars, die Sie in update* Funktion verwendet. Ich habe es zu letzterer ID geändert und auch den Code etwas optimiert, um den gewünschten Effekt zu erzielen.


Voll Beispiel:

ui<- fluidPage(

    titlePanel("Test"), 

    sidebarPanel(
    fileInput(inputId = "file1", label = "Upload File"), 
    selectizeInput(
     "sampleyvars", "Y-vars", choices = NULL, multiple = FALSE 
    ), 
    # you had ID here wrong 
    selectizeInput(
     "samplexvars", "X-vars", choices = NULL, multiple = TRUE 
    ) 

), 

    mainPanel(h3("Nothing special") 
) 
) 

server<- function(input, output, session) { 

    data <- reactive({ 
    file1 <- input$file1 
    req(file1) 
    dataSet <- read.csv(file=file1$datapath) 
    vars <- colnames(dataSet) 

    updateSelectizeInput(session, "sampleyvars", "Y-vars", 
         choices = vars, selected = vars[1]) 
    updateSelectizeInput(session, "samplexvars", choices = vars[-1], selected = vars[2]) 

    dataSet 
    }) 

    observe({ 
    varX <- colnames(data()) 
    varX <- varX[!(varX %in% input$sampleyvars)] 
    updateSelectizeInput(session, "samplexvars", "X-vars", choices = varX) 
    }) 

} 

shinyApp(ui = ui,server = server) 
+1

Ah ... vielen Dank! Genau das habe ich gebraucht. – abet

Verwandte Themen