In meiner Anwendung, frage ich den Benutzer, eine Datei (.csv) einzugeben. Weiterhin gibt es zwei selectInput (s), die mit renderUI() mit Spaltennamen aus der Eingabedatei gefüllt werden. Wenn der Benutzer zwei verschiedene Spalten auswählt und auf submitButton klickt, wird ein Plot generiert. Die Benutzeroberfläche mit idealer Ausgabe ist unten angegeben. Das funktioniert, weil ich die Werte manuell in das Diagramm eingegeben habe und nicht die Spalten, die in den Dropdown-Optionen ausgewählt wurden.R glänzend Rendern UI funktioniert nicht
korrekte Ausgabe
Ich denke, das Problem Faktor Typ Elemente in Datenrahmen zu numerischen Typ konvertiert, die aufgetragen werden kann.
das Fehlerbild:
server.R
library(shiny)
shinyServer(function(input, output) {
lastgang <- reactive({
if(is.null(input$file)){return()}
read.table(file=input$file$datapath, header =TRUE, sep=",")
})
output$X = renderUI({
selectInput("X", "Select field to plot along X axis", names(lastgang()), selected = NULL)
})
output$Y = renderUI({
selectInput("Y", "Select field to plot along Y axis", names(lastgang()), selected = NULL)
})
output$plot <- renderPlot({
if (is.null(input$X) || is.null(input$Y)){return()}
x = input$X
y = input$Y
plot(as.numeric(lastgang()$x),as.numeric(lastgang()$y))
})
})
ui.R
library(shiny)
shinyUI(fluidPage(
titlePanel("Source Design"),
sidebarLayout(
sidebarPanel(fileInput("file", label = h4("Select *.csv file")),
uiOutput("X"),
uiOutput("Y"),
submitButton("Plot")
),
mainPanel(
plotOutput('plot') )
)
))
Schwer zu sagen, während kein Kleber mit, wie Sie Ihre Daten aussieht. Ich stimme zu, dass die Umwandlung "as.numeric" wahrscheinlich einen Vektor erzeugt, der nur aus "NA" -Einträgen besteht. Welche Art von Daten haben Sie? Edit: Ich sah, wie du 'x <- input $ X' aufruftst und danach 'lastgang() $ x' nennst. Das sollte nur "x" sein, oder nicht? Ansonsten macht die Zuordnung 'x <- Eingabe $ X 'keinen Sinn, denke ich. Leider habe ich keine Erfahrung mit 'shiny' ... – FlorianSchunke
' x = Eingabe $ X' gibt einen Spalten-/Elementnamen zurück. Um die Reihe von Werten unter dieser Spalte zu erhalten, rufe ich lastgang() $ x auf, wobei lastgang() grundsätzlich ein R-Datenrahmen ist, der aus der .csv-Datei konvertiert wurde. Weiter habe ich überprüft, dass beide Spalten vom Typ 'num' sind. – Jio