Ich habe verschiedene Quellen von Code verschmolzen, um eine App zu erstellen, mit der man eine Datei hochladen kann (Datenrahmen).glänzend Auswahl bestimmter Spalten aus hochgeladenen Datenrahmen
Darüber hinaus möchte ich aber auch ermöglichen, bestimmte Spalten aus dem Datenrahmen auszuwählen und zu analysieren. Dies ist jedoch schwierig, da man den gegebenen Datenrahmen vordefinieren muss, um im ui.R Skript darauf zurückgreifen zu können. Wenn also ein vorher nicht definierter Datenrahmen auf die Seite hochgeladen wird, kann man ihn nicht verehren es in der ui.R wie es in dem Server definiert ....
vordefinierte Variablen
vchoices <- 1:ncol(mtcars)
names(vchoices) <- names(mtcars)
ui.R
runApp(
ui = basicPage(
h2('The uploaded file data'),
dataTableOutput('mytable'),
fileInput('file', 'Choose info-file to upload',
accept = c(
'text/csv',
'text/comma-separated-values',
'text/tab-separated-values',
'text/plain',
'.csv',
'.tsv'
)
),
actionButton("choice", "incorporate external information"),
selectInput("columns", "Select Columns", choices=vchoices, inline = T),
#notice that the 'choices' in selectInput are set to the predefined
#variables above whereas I would like to set them equal to the
#not yet defined uploaded file below in server.R
tableOutput("table_display")
))
Beachten sie, dass die 'Entscheidungen' in selectInput sind auf die Voreinstellung eingestellt ned Variablen oben, während Ich mag würde unter ihnen gleich der noch nicht definiert hochgeladene Datei setzen in server.R
server.R
server = function(input, output) {
info <- eventReactive(input$choice, {
inFile <- input$file
if (is.null(inFile))
return(NULL)
isolate(f<-read.table(inFile$datapath, header = T,
sep = "\t"))
f
})
output$table_display<-renderTable({
f<-info()
f<-subset(f, select=input$columns) #subsetting takes place here
head(f)
})
}
Kennt jemand eine Möglichkeit, auf eine Variable zu verweisen, die definiert ist in den Server, in der ui und damit interaktive Manipulation ermöglichen?
funktioniert perfekt, außer der Tatsache, dass ich einen Fehler, wenn ich Eingang zunächst die Daten, da keine Spalten haben ausgewählt- gewesen, die ein bisschen chaotisch aussieht ... Gibt es eine Möglichkeit, die Anzeige der Tabelle zu verschieben, bis ich die Spalten zif (Eingabe $ Spalten) {f <- Teilmenge (f, select = Eingabe $ Spalten)} ??? Vielen Dank –
Natürlich gibt es einen sehr schönen Weg, es mit der Funktion 'req' oder mit'validate' zu tun. Platzieren Sie einfach in 'render *' -Funktion als eine erste Zeile 'req (Eingabe $ xyz)'. Sie können es als "erfordern, dass Eingabe $ xyz verfügbar ist" lesen. Über [hier] (http://shiny.studio.com/articles/req.html) finden Sie eine nette Diskussion, die sich mit dem Umgang mit fehlenden Eingaben beschäftigt. –