如何在 R Markdown 中选择特定选项卡?

lan*_*oni 6 r r-markdown shiny

我需要从tabsetR Markdown 文档(使用 Shiny 运行时)中选择一个选项卡。

我遵循How to select a specific tabPanel in Shiny 中的示例,并尝试将其调整为 R Markdown。我id在标签集/标签中添加了s,并在updateTabsetPanel()通话中使用了它们,但似乎不起作用。(我在检查结果仪表板中的各个 HTML 元素时使用了弹出的名称。)

如何tabset通过单击按钮从 中选择“Chart3”选项卡?

编辑:我需要能够以编程方式(例如通过observeEvent()调用)选择特定的选项卡,而不仅仅是在启动时。

---
title: "Tabset Column"
output: flexdashboard::flex_dashboard
runtime: shiny
---
    
Column 
-------------------------------------
    
### Chart 1
    
```{r}
actionButton("switch_tab", "Switch tab", width=200)
```
   
Column {#mytabset .tabset}
-------------------------------------
   
### Chart 2

```{r}
```   
 
### Chart 3 {#mytab}
    
```{r}
observeEvent(input$switch_tab, {
    updateTabsetPanel(session, inputId = "section-mytabset", selected = "#section-mytab")
})
```
Run Code Online (Sandbox Code Playgroud)

Tim*_*Fan 4

observeEvent您可以将其actionButton自身包装在 an 中tags$a并链接到 ,而不是#section-mytabsection-请注意,使用时必须在选项卡名称前添加runtime: shiny

这可以解决您的问题还是您需要它来工作observeEvent

---
title: "Tabset Column"
output: flexdashboard::flex_dashboard
runtime: shiny
---

Column 
-------------------------------------
  
### Chart 1
  
```{r, echo = FALSE}
tags$a(href = "#section-mytab",
  shiny::actionButton("btn1", "go to mytab")
       )
```

Column {.tabset}
-------------------------------------
    
### Chart 2

```{r}

```   
  
### Chart 3 {#mytab}
  
```{r}

```
Run Code Online (Sandbox Code Playgroud)

如果需要,上面的逻辑可以与observeEvent使用 {shinyjs} 和不可见的actionButton. 技巧就在这里,我们仍然使用 anactionButton来触发选项卡。但实际的按钮并未显示display: none(重要的是,该按钮未设置为hidden,因为这将阻止它被单击)。然后我们创建另一个actionButton由 观察的observeEvent。这可以触发其他计算等,最后一个未显示的click计算。actionButton如果您有更多页面并且想要从第 1 页跳转到第 2 页上的选项卡 3,那么我们需要两个clicks:一个更改页面,一个激活选项卡。但我们都可以在observeEvent. 它很老套,看起来不像好的代码,但从好的方面来说,即使没有自定义的 JavaScript 函数,它也能工作。

---
title: "Tabset Column"
output: 
flexdashboard::flex_dashboard
runtime: shiny
---

```{r global, echo = FALSE}
library(shiny)
library(shinyjs)
useShinyjs(rmd = TRUE)
```


Column 
-------------------------------------
  
### Chart 1

```{r, echo = FALSE}
observeEvent(input$btn1, {
  # do some calculations here
  click("btn2")})
 
shiny::actionButton("btn1", "do something")

tags$a(href = "#section-mytab",
  # set this button to `display: none;` but *not* to `hidden`
  shiny::actionButton("btn2", "go to mytab", style = "display: none")
  )
```

Column {.tabset}
-------------------------------------

### Chart 2

```{r}

```   
  
### Chart 3 {#mytab}
  
```{r}

```
Run Code Online (Sandbox Code Playgroud)