this为基数,我想要的是

  1. 允许使用相同标题的多个选项卡
  2. 用于移除当前 Select 的标签的按钮remove

我试过以下方法:

ui <- fluidPage(
  sidebarLayout(
    sidebarPanel(
      actionButton("add", "Add Other tab"),
      actionButton("remove", "Remove Current tab")
    ),
    mainPanel(
      tabsetPanel(id = "tabs"
                  ,tabPanel("Java", "tab for Java")
                  ,tabPanel("C++", "tab for C++")
                  ,tabPanel("Python", "tab for Python")
                  ,tabPanel("Python", "tab for Python")
                  
      )
    )
  )
)
server <- function(input, output, session) {
  observeEvent(input$add, {
    insertTab(inputId = "tabs",
              tabPanel("Other language", "tab for other language"),
              select=TRUE
    )
  })
  observeEvent(input$remove, {
    removeTab(inputId = "tabs", target = input$tabs)
  })
}

shinyApp(ui, server)

然而,当我 Select 最后一个"Python"标签,然后点击按钮remove时,所有带有"Python"标题的标签都被删除了.我只想删除选定的选项卡.

有没有办法做到这一点?

推荐答案

问题

removeTab() docs规定target参数应为:

您要删除的tabPanel中的value个.

tabPanel()的默认参数是tabPanel(title, ..., value = title, icon = NULL).

当您创建两个标题相同的标签时,"Python",它们有相同的value,因此removeTab(inputId = "tabs", target = "Python")将删除它们.

溶液

只需创建具有不同值的Python选项卡:

tabsetPanel(id = "tabs"
    ,tabPanel("Java", "tab for Java")
    ,tabPanel("C++", "tab for C++")
    ,tabPanel("Python", "tab for Python", value = "python1")
    ,tabPanel("Python", "tab for Python", value = "python2")
                  
)

如下图所示,当您单击"删除当前选项卡"按钮时,它现在只会删除选定的选项卡:

enter image description here

R相关问答推荐

使用预定值列表将模拟数量(n)替换为rnorm()

如何按排序顺序打印一个框架中所有精确的唯一值?

selectInput不返回ALL,并将因子转换为shiny 的数字

通过使用str_detect对具有相似字符串的组进行分组

有没有一个R函数允许你从一个数字变量中提取一个数字,而不考虑它的位置(不仅仅是第一个或最后一个数字?

在特定Quarto(reveal.js)幻灯片上隐藏徽标

可以替代与NSE一起使用的‘any_of()’吗?

为了网络分析目的,将数据框转换为长格式列联表

如何通过判断数据框的一列来压缩另一列?

用两种 colored颜色 填充方框图

以字符格式导入的ExcelElectron 表格日期列标题

使用RSelenium在R中抓取Reddit时捕获多个标签

通过匹配另一个表(查找表)中的列值来填充数据表,并在另一个变量上进行内插

R中从因数到数字的转换

使用显式二元谓词子集化sfc对象时出错

修复标签重叠和ggploy内的空间

如何根据每个子框架中分类因子的唯一计数来过滤子框架列表?

使用点图调整离散轴比例

如何使用ggsurvfit包更改风险表中的标签名称?

以列名的字符向量作为参数按行应用自定义函数