2014-12-04 23 views
6

[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.

  1. 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(); 
        }); 
    }" 
    
  2. 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 { 
        ... 
        } 
    }) 
    

cevap

2

İlk tablonun satırındaki tıklama fonksiyonu var daha kolaydır. tablonun satırlarına bir tıklama için bir geri arama ekleyebilirsiniz. Bir tıklama gözlendiğinde, satır endeksi parlak bir reaktif girdiye gönderilir:

+0

Teşekkürler! Tam olarak ne arıyorum! – Boxuan

+0

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ı? –