[code]R legami lucido costruire tra schede
library(shiny)
server <- function(input, output) {
output$iris_type <- renderDataTable({
data.frame(Species=paste0("<a href='#filtered_data'>", unique(iris$Species), "</a>"))
})
output$filtered_data <- renderDataTable({iris})
}
ui <- shinyUI(fluidPage(
mainPanel(
tabsetPanel(
tabPanel("Iris Type", dataTableOutput("iris_type")),
tabPanel("Filtered Data", dataTableOutput("filtered_data"))
)
)
))
shinyApp(ui = ui, server = server)
[Domanda]
Sto cercando di collegare la DataTable
uscita sulla prima scheda alla seconda scheda. Ad esempio, quando faccio clic su setosa
, la prossima cosa che compare è la seconda scheda con il set di dati iris
contenente solo setosa
. Dovrebbe eseguire questa parte di codice da R: iris[iris$Species=="setosa",]
. Dovrebbe funzionare anche per altri Species
in iris
.
Come posso creare il collegamento ed eseguire il comando R facendo clic?
[Aggiornamento sulla risposta]
Nel caso in cui si dispone di un layout diverso e deve essere specifica, ecco cosa si può fare.
La funzione
DataTable
callback:callback = "function(table) { table.on('click.dt', 'tr', function() { Shiny.onInputChange('rows', table.row(this).data()[0]); $(\".tabbable .nav.nav-tabs li a:contains('Filtered Data')\").click(); }); }"
Il codice
R
:output$filtered_data <- renderDataTable({ tagString <- input$rows rawTags <- gsub("</a>", "", gsub("<a href='#filtered_data'>", "", tagString)) if (identical(tagString, character(0))) { iris } else { ... } })
Grazie! Esattamente quello che sto cercando! – Boxuan
Ho cercato online una soluzione simile e funziona bene, ma quello che noto è che se dovessi riordinare i collegamenti nella tabella Tipo di iris in modo che Virginica sia in cima e quindi fare clic sul collegamento per Virginica , riporta le colonne Setosa nella scheda Dati filtrati. Penso che questo sia perché il javascript "table.row" è predefinito in modo che la prima riga sia sempre Setosa, la seconda Versicolor e la terza Virginica. C'è un modo che il javascript possa identificare il nome all'interno della riga, invece del numero di riga stesso? –