繁体   English   中英

标签之间的R闪亮构建链接

[英]R shiny build links between tabs

[码]

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)

[题]

我试图将第一个选项卡上的DataTable输出链接到第二个选项卡。 例如,当我点击setosa ,接下来显示的是第二个选项卡,其中iris数据集仅包含setosa 它应该从R: iris[iris$Species=="setosa",]执行这段代码。 它也适用于iris其他Species

如何通过单击建立链接并运行该R命令?


[答案更新]

如果您有不同的布局并且需要具体,那么您可以执行此操作。

  1. 您的DataTable回调函数:

     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. 你的R代码:

     output$filtered_data <- renderDataTable({ tagString <- input$rows rawTags <- gsub("</a>", "", gsub("<a href='#filtered_data'>", "", tagString)) if (identical(tagString, character(0))) { iris } else { ... } }) 

在第一个表的行上更容易使用click函数。 您可以添加一个回调,查找表中行的单击。 当观察到点击时,行索引被发送到闪亮的被动输入:

library(shiny)

server <- function(input, output) {
  output$iris_type <- renderDataTable({
    data.frame(Species=paste0("<a href='#filtered_data'>", unique(iris$Species), "</a>"))
  },
  callback = "function(table) {
    table.on('click.dt', 'tr', function() {
      Shiny.onInputChange('rows', table.row( this ).index());
      tabs = $('.tabbable .nav.nav-tabs li a');
      $(tabs[1]).click();
    });
}")
  output$filtered_data <- renderDataTable({
    if(is.null(input$rows)){
      iris
    }else{
      iris[iris$Species %in% unique(iris$Species)[as.integer(input$rows)+1], ]
    }
  })
}

ui <- shinyUI(fluidPage(
  mainPanel(
    tabsetPanel(
      tabPanel("Iris Type", dataTableOutput("iris_type")),
      tabPanel("Filtered Data", dataTableOutput("filtered_data"))
    )
  )
))

shinyApp(ui = ui, server = server)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM