gpt4 book ai didi

javascript - R shiny 在选项卡之间建立链接

转载 作者:数据小太阳 更新时间:2023-10-29 05:26:04 27 4
gpt4 key购买 nike

[代码]

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 时,接下来显示的是第二个选项卡,其中包含仅包含 setosairis 数据集。它应该从 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 {
    ...
    }
    })

最佳答案

在第一个表格的行上有点击功能更容易。您可以添加一个回调寻找对表格行的点击。当观察到点击时,行索引被发送到 Shiny 的 react 输入:

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)

关于javascript - R shiny 在选项卡之间建立链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27303526/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com