[Code]R parlak inşa bağlantılar
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)
[Soru]
Ben ikinci sekmeye ilk sekmede DataTable
çıkışını bağlamaya çalışıyorum. Örneğin, setosa
'u tıklattığımda, bir sonraki şey yalnızca setosa
'u içeren iris
veri kümesiyle ikinci sekmedir. Bu kod parçasını R: iris[iris$Species=="setosa",]
'dan yürütmelidir. iris
'da diğer Species
için de çalışmalıdır.
Bağlantıyı nasıl kurabilirim ve bu R komutunu tıklayarak çalıştırabilir miyim?
[Yanıta Güncelleme] Eğer farklı bir düzen var ve spesifik olması gerekiyor durumda
, burada yapabiliyor olmasıdır.
Sizin
DataTable
geri arama fonksiyonu: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(); }); }"
Sizin
R
kodu:output$filtered_data <- renderDataTable({ tagString <- input$rows rawTags <- gsub("</a>", "", gsub("<a href='#filtered_data'>", "", tagString)) if (identical(tagString, character(0))) { iris } else { ... } })
Teşekkürler! Tam olarak ne arıyorum! – Boxuan
Ben benzer bir çözüm için çevrimiçi arıyordum ve bu iyi çalışıyor, ama fark ettim ki Iris tipi tablodaki bağlantıları yeniden sıralamak gerekirse, Virginica üstte ve sonra Virginica için linke tıklayın Filtrelenmiş Veri sekmesindeki Setosa sütunlarını geri getirir. Bunun nedeni, javascript "table.row" öğesinin ön tanımlı olduğundan, ilk satırın her zaman Setosa, ikinci Versicolor ve üçüncü Virginica olduğunu düşünüyorum. Javascript'in, satırın kendisi yerine satırdaki adı tanımlayabilmesinin bir yolu var mı? –