I am writing a report in R Markdown using shiny runtime. It has four main sections which I want to make accessible through the tabset functionality. However, I would really like to embed buttons in each individual section which allows you to jump to another section.
A minimal example is included below, where I tried to follow this example but it doesn't seem to work outside of the flexdashboard setup. To make things even more complex, I would like to be able to trigger switching sections on an observeEvent-type of way. Specifically, I'm trying to include some simple barplots in some of the sections which, when clicked on, bring the user to another section.
Any help is greatly appreciated!
---
title: "Example Report"
output:
html_document
runtime: shiny
---
# {.tabset .tabset-fade .tabset-pills}
## A. {#mytab1}
```{r, echo = FALSE}
tags$a(href = "#section-mytab2",
shiny::actionButton("btn1", "go to mytab2")
)
```
### Summary
### Methodology
## B. {#mytab2}
### Summary
### Methodology
## C. {#mytab3}
### Summary
### Methodology
## D. {#mytab4}
### Summary
### Methodology
Related
I need to select a tab from a tabset in R Markdown document (with Shiny runtime).
I followed the example in How to select a specific tabPanel in Shiny, and tried to adapt it to R Markdown. I added ids to the tabset / tab, and used them in the updateTabsetPanel() call, but it doesn't seem to work. (I used the names that pop-up when inspecting the individual HTML elements in the resulting dashboard.)
How can I select the "Chart3" tab from the tabset by clicking the button?
EDIT: I need to be able to select a specific tab programmatically (e.g. via observeEvent() call), not just on start-up.
---
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")
})
```
The {.active} attribute could answer your question when launching the dashboard (static solution), and works with html_document :
---
title: "Active Tabset"
output: html_document
---
Column {.tabset}
-------------------------------------
### Tab 1
Some text
### Tab 2 {.active}
Some other text
Unfortunately, this didn't work with Flexdashboard :
---
title: "Active Tabset"
output: flexdashboard::flex_dashboard
---
Column {.tabset}
-------------------------------------
### Tab 1
Some text
### Tab 2 {.active}
Some other text
The issue has already been signaled here but was closed because of automatic lock.
The waiting period in order to comply with RMarkdown issue guide being over, I filed a new issue with the Minimal Reproducible Example above.
EDIT :
This request has been taken into account, so this should soon work with Shiny Dashboard.
Instead of an observeEvent you could wrap the actionButton itself in an tags$a and link to #section-mytab. Note that you have to add section- before the tab name when using runtime: shiny.
Does this solve your problem or do you need it to work with 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}
```
If needed, the logic above can be combined with observeEvent using {shinyjs} and a non-visible actionButton. The trick is here, that we still use an actionButton to trigger the tab. But the actual button is not shown display: none (it is important, that the button is not set to hidden, since this will prevent it from being clicked). We then create another actionButton which is observed by an observeEvent. This can trigger other calculations etc. and finally a click on the actionButton which is not shown. If you have more pages and want to jump from page 1 to, say, tab 3 on page 2, then we would need two clicks: one changing the page and one activating the tab. But we can all trigger this inside the observeEvent. Its hacky and doesn't look like good code, but on the plus side it works, even without a custom javascript function.
---
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}
```
I am working on a simple dashboard with using R, Shiny, Flexdashboard and Leaflet. The code itself seems to work fine. However I am facing some issues to deploy it.
When I run/Knit the document for the first time everytyhing seems ok, but if I try to publish it I receive this message when I hit the 'Publish' button above the rendered document:
'Only rendered R Markdown documents can be published to RPubs. To
publish this document, click Knit to render it, then click the Publish
button above the rendered document'
Then, if I reload the page or Knit the document again without make any change, the tables and the maps disappears.
Initially, I thought it was something with Leaflet, but I got the same behavior with this minimal and reproducible example both in R Studio and R Studio Cloud.
---
title: "Example"
output:
flexdashboard::flex_dashboard:
orientation: columns
runtime: shiny
---
```{r }
library(flexdashboard)
library(shiny)
library(DT)
# OPERAÇÃO POR BAIRROS
link = "https://docs.google.com/spreadsheets/d/e/2PACX-1vS3cj3PhVm-2F-CiEJOE8O1YIIU6t7os_wDDrACFne39ZRUvxLKdV_MKZNzD6xTG0hoI5ZroHpxyIzV/pub?output=csv"
df_op = read.csv(link)
```
Column {data-width=350}
-----------------------------------------------------------------------
### Table
```{r table}
df_table = reactive({
df_op
})
DT::renderDataTable(df_table())
```
To solve the blank element issue, the line
runtime:shiny
must be written from the first column, just as described bellow.
title: "Example"
output:
flexdashboard::flex_dashboard:
orientation: columns
runtime: shiny
The goal is to create a a page in Rmarkdown that contains two tabs each displaying different information. After over a dozen different tries I've decided it makes sense to ask since the closest I've gotten as shown in the image is two tabs both showing the same information. Not sure what it is I'm missing. I've searched a couple other questions and none of them address the issue.
This is the code that I have tried so far
---
title: test
output:
flexdashboard::flex_dashboard:
orientation: rows
vertical_layout: scroll
self_contained: false
---
Page
========================
## Try {.tabset}
### Tryto
```{r}
cat(paste("WORDSSSSS"))
```
### Work
```{r}
cat(paste("WORDSSSSSqqqqqqqqq"))
```
I included the single quotes here since it was messing with how things were displayed in SO so please remove.
Desired out put would have "WORDSSSSS" under the "Tryto" tab and "WORDSSSSqqqqqqqqqq" under "Work".
Thanks!
EDIT:
packages
---
title: "Test"
output: html_document
---
## Try {.tabset}
### Tryto
```{r}
cat(paste("WORDSSSSS"))
```
### Work
```{r}
cat(paste("WORDSSSSSqqqqqqqqq"))
```
I want to use ionicons icons when building a dashboard with flexdashboard.
From documentation ( https://rmarkdown.rstudio.com/flexdashboard/using.html#icon-sets )an example:
“ion-social-twitter”
When i search for same icon in iconicons website ( https://ionicons.com/ ) I get
<ion-icon name="logo-twitter"></ion-icon>
If in my R code I insert "ion-logo-twitter" it doesn't work. What's the correct name for icons of this website? Thanks
I had a similar icon issue with my R Markdown site. The explanation is that R Markdown is operating with an outdated version of ionicons (v2), which uses a different naming convention.
If you use the v2 ionicon names, found at https://ionicons.com/v2/cheatsheet.html, it should solve your problem.
A little hard to tell without more code, but the following should work:
---
title: "Column Orientation"
output: flexdashboard::flex_dashboard
---
```{r setup, include=FALSE}
library(flexdashboard)
```
Column
-------------------------------------
### Chart 1
```{r}
valueBox(42, icon = "ion-social-twitter")
```
Column
-------------------------------------
### Chart 2
```{r}
```
### Chart 3
```{r}
I am writing a relatively long report using R Notebook that makes use of R markdown language which combines text and code in the same document and generates html output.
I would like to be able to exclude some of the analysis (both text and R code) from showing in the final HTML. This is very useful if I want to create two versions of the report - a full/detailed version, as well as a shorter version with main graphs and conclusions.
Obviously, I can create separate Rmd file for each type of report (or comment out pieces of the report that need to be excluded for the shorter version), but I was wondering if there is a more elegant way to do it.
Something like this:
if (Version == "full_text"){
Full analysis goes here
```{r}
R code goes here (could be multiple chunks)
```
}
else {
The shorter version goes here
```{r}
R code goes here
```
}
Place the "detailed" part of the report in a knitr child document which you call optionally from the main document.
Detailed content can then be switched on by calling the child document and it can be switched off by setting the variable child_docs to NULL. For example here are a main and a child document below.
Child document
Save this document under knitr-child.Rmd
---
title: "knitr child"
output: html_document
---
# Details from the child document
Hi, there. I'm a child with a plot and as many details as necessary.
```{r test-child}
plot(cars)
```
Main document - full/detailed version
---
title: "Report"
output: html_document
---
# Summary
```{r setup}
child_docs <- c('knitr-child.Rmd')
# child_docs <- NULL
```
```{r test-main, child = child_docs}
```
# Conclusion
Main document shorter version
---
title: "Report"
output: html_document
---
# Summary
```{r setup}
# child_docs <- c('knitr-child.Rmd')
child_docs <- NULL
```
```{r test-main, child = child_docs}
```
# Conclusion