Pessoa, bom dia!
Gostaria de preparar um relatório em rmarkdown mas gostaria que chunks de código e textos só fossem executados caso o valor de uma variável seja, por exemplo, TRUE.
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
mostra_a <- TRUE
mostra_b <- FALSE
```
## R Markdown
Bla bla bla bla bla
O tópico A é `r mostra_a` e o tópico B é `r mostra_b`
<!-- Quero aqui mostrar um texto quando A é TRUE -->
<!-- E não mostrar B pois B é false -->
Pensei em atrelar o valor de ‘include’ ao valor da variável, mas não consegui inserir o bloco de texto/markdown a partir disso. Alguma ideia?
Muito obrigado!
Oi Dornelles!
Elaborei um exemplo abaixo com a forma que pensei, me avise se não estiver claro.
O mais importante nesses exemplos é a opção de chunk results='asis'
e o uso de alguma função para combinar as coisas (eu dei exemplo com cat e o glue, mas prefiro glue).
---
title: "Untitled"
output: html_document
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
mostra_a <- TRUE
mostra_b <- FALSE
```
O tópico A é `r mostra_a` e o tópico B é `r mostra_b`
<!-- Exemplos onde o tópico A é verdadeiro -->
```{r echo=FALSE, results='asis'}
if(mostra_a == TRUE){
cat("Aqui coloco um texto caso o topico A seja verdadeiro. Podemos usar marcação markdown aqui, por exemplo: **texto em negrito**. O valor de mostra_a é ", mostra_a, ".")
}
```
```{r echo=FALSE, results='asis'}
if(mostra_a == TRUE){
glue::glue(
"Aqui coloco um texto caso o topico A seja verdadeiro, e usando a função `glue::glue`. Essa função deixa a gente colar códigos no meio de textos de forma mais fácil usando as chaves. Por exemplo: o valor de mostra_a é {mostra_a}."
)
}
```
<!-- E não mostrar B pois B é false -->
```{r echo=FALSE, results='asis'}
if(mostra_b == TRUE){
glue::glue(
"Aqui coloco um texto caso o topico B seja verdadeiro, e usando a função `glue::glue`.."
)
}
```
Você também pode transformar os objetos mostra_a
e mostra_b
em parâmetros no seu relatório:
---
title: "Untitled"
output: html_document
params:
mostra_a: TRUE
mostra_b: FALSE
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```
O tópico A é `r params$mostra_a` e o tópico B é `r params$mostra_b`
<!-- Exemplos onde o tópico A é verdadeiro -->
```{r echo=FALSE, results='asis'}
if(params$mostra_a == TRUE){
cat("Aqui coloco um texto caso o topico A seja verdadeiro. Podemos usar marcação markdown aqui, por exemplo: **texto em negrito**. O valor de mostra_a é ", params$mostra_a, ".")
}
```
```{r echo=FALSE, results='asis'}
if(params$mostra_a == TRUE){
glue::glue(
"Aqui coloco um texto caso o topico A seja verdadeiro, e usando a função `glue::glue`. Essa função deixa a gente colar códigos no meio de textos de forma mais fácil usando as chaves. Por exemplo: o valor de mostra_a é {params$mostra_a}."
)
}
```
<!-- E não mostrar B pois B é false -->
```{r echo=FALSE, results='asis'}
if(params$mostra_b == TRUE){
glue::glue(
"Aqui coloco um texto caso o topico B seja verdadeiro, e usando a função `glue::glue`.."
)
}
```
2 curtidas
Bea,
Muito obrigado! Era exatamente o que eu precisava!
Obrigado também por lembrar da possibilidade de colocar como parâmetros
1 curtida