R glänzende Fehler: kann Nicht zwingen Typ 'Schließung' der vector vom Typ 'double'
Ich würde gerne in einen Vektor von zahlen als Eingabe, und dann einfach den plot, das Histogramm. Hier ist mein R-code:
ui.R:
library(shiny)
shinyUI(pageWithSidebar(
headerPanel("Hello Shiny!"),
sidebarPanel(selectInput("Vector", "Select Numbers", c(1,2,3,4), selected = NULL, multiple = TRUE)),
mainPanel( plotOutput("plotVector"))
))
Server.R:
library(shiny)
shinyServer(function(input, output) {
v<- function()
{
v <- rnorm(input$Vector)#take vector as input
}
output$plotVector <- renderPlot({ hist(as.numeric(v))})
})
code, um die app auszuführen:
library(shiny)
runApp("C:/Users/me/Desktop/R Projects/testShiny")
Wenn ich diese ausführe, erhalte ich die Fehlermeldung "kann Nicht zwingen Typ 'Schließung' der vector vom Typ 'double'"
Können Sie helfen? Danke.
- Ein "Verschluss" ist eine Funktion, -- irgendwo in dort, Sie haben eine Funktion aufgerufen (mit Namen), anstatt eine variable.
- So wie ich die Daten zurück, die fromt er Funktion und NICHT die Funktion selbst? Irgendeine Idee?Danke.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Auf der server-Seite, die Sie definieren v als Funktion:
und dann Sie versuchen, es als argument zu
as.numeric(...)
:also R versucht zu konvertieren, sowas von Klasse: - Funktion zu verdoppeln.
Bearbeiten: Antwort OP die Nachfolge-Frage. Mit den folgenden, für die ui.R und server.R:
Auf der server-Seite
shinyUI(...)
nimmt zwei Objekte, die automatisch übermittelt:input
undoutput
. Die Eigenschaften voninput
("Spalten" in der R-Terminologie) definiert in der ui.R durch das anlegen von unterschiedlichen GUI-Objekte. So erstellen Sie eineselect
- Objekt mit einem Aufruf vonselectInput(...)
. Die Objekt-id ist"Vector"
. Diese verwiesen wird, wird auf der server-Seite als:input$Vector
. Beachten Sie, dass das, was Sie fordernVector
ist eigentlich eine einzige Zahl: was auch immer der Benutzer wählt in der Auswahlbox. Plotten Sie das Histogramm einer einzelnen Zahl ist bedeutungslos, so änderte ich den code, der zum input$Vektor der Mittelwert einer Normalverteilung. Sie hatte auch das problem, dass der input$ - Vektor wurde mit NULL initialisiert im code, die warf einen Fehler. Also habe ich das geändert, initialisiert auf 0.Die Aussage:
auf der server-Seite füllt ein Objekt
output$main_plot
imui.R
, die ist definiert durch die Aussage:Rollen Sie alle auf, die folgenden:
ui.R:
server.R:
Generiert diese:
v<-
aus dem Körper Ihre Funktion. Dannv(x)
wird es wieder den Vektor der Daten, diehist
erwartet.Wie es aussieht, tun das funktioniert!