Ich habe eine Shiny-App, die eine Reihe von Dropdown-Auswahlfelder enthält, deren Werte aus dem Lesen einer RDS-Datei gefüllt werden. Die App enthält auch eine fileInput-Funktion zum Hochladen neuer Daten. Wie kann ich die Werte in den Dropdown-Feldern ändern, um die neuen Daten widerzuspiegeln? Momentan kann ich sehen, dass die Daten hochgeladen werden, aber die alten Daten bleiben im Dropdown-Menü.Update Shiny 'selectInput' Drop-Down mit neuen Werten nach dem Hochladen neuer Daten mit fileInput
Die Daten, die in einer Datei
saveRDS(data.frame(names=c("Jill","Jane","Megan")),"myDataFrame.rds")
In meiner app.R Datei gespeichert werden hochgeladen sollte ich die ‚default‘ Wert der Daten zuerst definieren:
myDataFrame <- data.frame(names=c("Tom","Dick","Harry"))
Die Inhalt meiner app.R
ist wie folgt:
library(shiny)
ui <- shinyUI(
fluidPage(
fileInput('file1', 'Choose file to upload',accept = ".rds"),
selectInput("myNames","Names",myDataFrame$names),
tableOutput('contents')
)
)
server <- shinyServer(function(input, output) {
output$contents <- renderTable({
inFile <- input$file1
if (is.null(inFile)) { return(myDataFrame) }
readRDS(inFile$datapath)
})
})
die erste Ansicht der Anwendung a s erwartet: Sowohl das Dropdown als auch die Tabelle enthalten die 'Standardnamen'. Nach dem Hochladen meiner RDS-Datei, die einen neuen Datenrahmen enthält, ändert sich die Tabelle (nach der ich gesucht habe), aber die Dropdown-Werte nicht. Wie kann ich das letztere geschehen lassen?
Nein (t noch) nicht. Das Dropdown wird nun mit den Zahlen 1, 2 und 3 gefüllt - sowohl vor als auch nach dem Hochladen der Datei. – janverkade
@janverkade Sie verwenden genauen Code und gleichen 'myDataFrame'? Hast du data.frames geändert? Ich stelle mir vor, dass Zeilennummern etwas damit zu tun haben. – PoGibas
Ja - Kopieren Sie Ihren Code in meine App.R. – janverkade