2017-02-07 5 views
2

ich die renderDataTable Funktion zum ersten Mal verwenden, und ich bin eine reaktive Variable in es wie folgt übergeben:R Shiny Fehler: „Objekt-Typ näher Subsettable nicht“

x<-reactive ({x[1:3]<-input$num 
    }) 
    output$table <- renderDataTable(x()) 

Wenn ich laufe der App, mir wurde gesagt, "Objekt des Typs 'Schließung' ist nicht Teilmenge".

Was ich weiß,

Ich verstehe, dass der Fehler wahrscheinlich erzeugt, weil ich eine Funktion bin vorbei, nicht um einen Datenrahmen, genannt x.

Was ich weiß nicht

Wie kann ich dieses Problem lösen? Ich muss sehr viel x() durch die renderDataTable übergeben. Ich habe versucht, es einer anderen Variablen gleichzusetzen und es so zu übergeben, aber es hat nicht funktioniert.

Können Sie mir bitte einen Rat geben, wie ich RenderDataTable in dieser Situation verwenden kann?

+0

Ich glaube nicht, dass Sie generische Namen wie 'Tabelle' für' Ausgabe $ Tabelle' haben können, versuchen Sie einen anderen Namen. –

+0

Was ist 'x [1: 3] <- Eingabe $ num' soll tun? – HubertL

Antwort

2

Ich denke, das sollte funktionieren. Lass es mich anders wissen.

myx<-reactive ({ 
    x[1:3]<-input$num 
    x 
}) 
output$table <- renderDataTable(data.frame(x=myx())) 
+0

Brilliant! Vielen Dank. Warum glaubst du, dass mein Code nicht funktioniert hat, aber deiner? – magicmykh

+1

Der Fehler zeigt an, dass 'x()' verwirrend ist. Es sollte sich nicht beschweren, wenn Ihre reaktive Funktion das richtige Objekt bekommt. Also gebe ich das Objekt x in der reaktiven Funktion zurück. Außerdem bin ich nicht sicher, ob es wichtig ist, wenn Sie 'x' als gleichen Namen mit Ihrem Vektor namens' x' verwenden. Deshalb benutze ich 'myx' anstelle von' x'. Hoffe das hilft. – gsun