Haben Sie versucht, die Daten, die in der Datentabelle angezeigt werden sollen, in einen Datenrahmen zu stellen? Ich würde dann den erstellten Datenrahmen als Daten verwenden, die in der Datentabelle gerendert werden sollen. Nach dem Filtern der Datentabelle durch die Benutzerschnittstelle könnte die "Eingabe $ tableId_rows_all" verwendet werden, um die Zeilenindizes zu erhalten und diese Indizes zu verwenden, um den Datenrahmen vor dem Plotten zu filtern.
Hilft es?
Dies ist ein Beispiel, wie Sie Datentabelle verwenden können, um einen Datenrahmen zu filtern, zum Plotten:
# ui.R #
library(shiny)
library(DT)
fluidPage(
title = 'DataTables Information',
h1('A client-side table'),
fluidRow(
DT::dataTableOutput('irisTable')
),
fluidRow(
plotOutput("irisPlot")
)
)
library(shiny)
library(DT)
shinyServer(function(input, output, session) {
# render the table (with row names)
output$irisTable = DT::renderDataTable(iris,
server = FALSE, caption = "Column sum example",
filter = "top")
output$irisPlot <- renderPlot({
gg <- ggplot(iris[input$irisTable_rows_all, ],
aes(x = Sepal.Length, y = Petal.Length))
gg <- gg + geom_point()
print(gg)
})
})
gibt es einen „renderdataframe“ Befehl? – eteuler
Ich ging davon aus, dass die Daten, die Sie zum Füllen der Datentabelle verwenden, nicht von einem Datenrahmen kommen und dass Sie deshalb die Datentabelle in einen Datenrahmen ablegen mussten. Ich habe meine Antwort mit einem Beispiel für das Zeichnen eines mit Datentabelle gefilterten Datenrahmens bearbeitet. –