如何在R Shiny Flexdashboard中创建以输入为条件的页面链接?

问题描述

在下面的示例中,我有两个输入,第二个输入取决于第一个输入。我想做的是根据第一输入的值在第一页上创建一个链接,该链接可以转到第二页或第三页。如果第一个输入为“是”,则触发第二个输入,我计划在第三页中使用第二个输入的值。这是我的功能示例。

---
title: "test"
output: 
  flexdashboard::flex_dashboard:
    theme: yeti
    orientation: rows
    vertical_layout: fill
runtime: shiny
---

Page 1
=======================================================================

Sidebar {.sidebar}
-----------------------------------------------------------------------

#```{r}
library(tidyverse)

#First Input
selectInput(inputId='choiceID',label='choice',choices=c("Yes","No"),selected="No")

#Second Input
uIoUtput("cond1")

output$cond1 <- renderUI({
  if(input$choiceID == "Yes") selectInput(inputId='choice2ID',label="choice2",choices=c("foo","bar"))
})

#Create Page Tag
page <- reactive(if_else(input$choiceID == "Yes","page-3","page-2"))

#This works
page2 <- "page-2"

#```

Click on [Link](#`r page`)

`r page`

Click on [Link](#`r page2`)

Page 2
=======================================================================

Page 3
=======================================================================

我试图在对象page中捕获需要在链接中进入“ page-2”或“ page-3”的文本,然后将其传递给链接调用。我在链接下方添加r page,以查看对象的文本。它似乎是正确的,并且在第一个输入更改时正在更新,但是单击该链接后,链接没有指向任何地方。我还添加page2对象,它没有条件片段,但确实使链接正常工作。

因此,我想知道如何通过使用我的方法或其他方法使此条件输入修改链接以转到另一个页面。预先感谢您的帮助。

解决方法

这就是我要做的。以下解决方案在HTML()renderUI()内使用paste(),根据选择生成适当的引用。然后,您可以使用htmlOutput()进行显示。

---
title: "test"
output: 
  flexdashboard::flex_dashboard:
  theme: yeti
orientation: rows
vertical_layout: fill
runtime: shiny
---
  
Page 1
=======================================================================

Sidebar {.sidebar}
-----------------------------------------------------------------------

#```{r}
library(tidyverse)

#First Input
selectInput(inputId='choiceID',label='choice',choices=c("Yes","No"),selected="No")

#Second Input
uiOutput("cond1")

output$cond1 <- renderUI({
  if(input$choiceID == "Yes") selectInput(inputId='choice2ID',label="choice2",choices=c("foo","bar"))
})

#Create Page Tag

output$link <- renderUI({
  req(input$choiceID)
  htmltools::HTML(paste0("Click this <a href=",ifelse(input$choiceID == "Yes","\"#section-page-3\"","\"#section-page-2\""),">link</a>"))
})
#This works
htmlOutput("link")
#```



Page 2
=======================================================================

Page 3
=======================================================================
,

您应该创建一个动态链接:

 name: Tag
 on: 
   create:
     tags:
       - v*
 jobs:
   job1:
     runs-on: ubuntu-latest
     steps:
     - name: checkout source code
       uses: actions/checkout@v1
     - name: Get Branch
       run: |
         raw=$(git branch -r --contains ${{ github.ref }})
         branch=${raw/origin\/}
         echo ::set-env name=BRANCH::$branch
     - run: echo ${{ env.BRANCH }}