gpt4 book ai didi

javascript - R Shiny : Click and jump to different tab passing values

转载 作者:行者123 更新时间:2023-11-30 08:31:53 25 4
gpt4 key购买 nike

有什么方法可以点击dataTableOutput中的一个元素,然后跳转到不同的tabPanel吗?

我知道使用 escape = FALSE 可以将 url 添加到表格元素。但是如何将“跳转到不同的选项卡”添加到 dataTableOutput 元素?传递值?

请查看我的可重现示例。谢谢。

library(shiny)

server <- function(input, output) {
X = data.frame(
ID = c(
"<a href = 'http://www.google.com'> google </a>",
"Click here then Jump to tab2 and pass x=2 and y=2 to tab2",
"Click here then Jump to tab2 and pass x=3 and y=4 to tab2"
),
x = c(1, 2, 3),
y = c(10, 2, 4)
)
output$datatable = renderDataTable({X}, escape = FALSE,
options = list(
paging = FALSE,
searching = FALSE,
filtering = FALSE,
ordering = FALSE
))
output$text = renderText(paste("X = ", "Y = "))
}

ui <- fluidPage(tabsetPanel(
tabPanel("tab1", dataTableOutput("datatable")),
tabPanel("tab2", textOutput("text"))
))

shinyApp(ui = ui, server = server)

最佳答案

幸运的是,不需要 JS 或 jQuery,因为所有这些事情都可以在 Shinyserver 端完成。

好的,我们从哪里开始... DT 有一个内置的回调功能来访问用户点击了哪些行/列/单元格。参见示例 here .那么就没有理由将此信息“发送”到 tab2,但我们可以根据需要对这些信息进行处理。就像适本地设置 tab2 中的文本一样。为了更改选项卡,shiny 具有 updateTabsetPanel 功能,可让您在没有任何超链接的情况下更改选项卡。

一种更新日志:

  • 插入 observeEvent 以实现功能。
  • 添加了selectedserver属性来获取单行回调
  • 将 Id 添加到 tabsetPanel 以启用通信。
  • 去掉 google 链接并转义

代码:

library(shiny)
library(DT)

server <- function(input, output, session) {
X = data.frame(
ID = c("Click here then Jump to tab2 and pass x=1 and y=10 to tab2",
"Click here then Jump to tab2 and pass x=2 and y=2 to tab2",
"Click here then Jump to tab2 and pass x=3 and y=4 to tab2"),
x = c(1,2,3),
y = c(10,2,4)
)

output$datatable = renderDataTable({X}, selection = "single", server = FALSE,
options = list(paging=FALSE,
searching=FALSE,
filtering=FALSE,
ordering=FALSE)
)
observeEvent(input$datatable_rows_selected, {
row <- input$datatable_rows_selected
output$text <- renderText({paste("X =", X[row, "x"], "Y =", X[row, "y"])})
updateTabsetPanel(session, "mainPanel", selected = "tab2")
})
}

ui <- fluidPage(

tabsetPanel(id = "mainPanel",
tabPanel("tab1",dataTableOutput("datatable")),
tabPanel("tab2",textOutput("text"))
)
)

shinyApp(ui = ui, server = server)

关于javascript - R Shiny : Click and jump to different tab passing values,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36612312/

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