Мой вопрос является расширением вопроса Generate Dynami c R Markdown Blocks , примененного к Flexdashboards R.
Я сделал простую flexdashboard с одной цифрой c вход: количество столбцов, которые будут отображаться в теле панели управления. Поскольку я изменяю этот ввод цифр c, я ожидаю, что количество столбцов изменится соответственно.
Для случая c, в котором число столбцов указано в начале, решение было предоставлено в указанном вопросе.
Для случая динамического c, где число столбцов установлено shiny::numericInput()
, я попытался изменить это решение, заключив код R в операторы reactive({})
.
Вот мой файл flexdashboard.Rmd:
---
title: "Dynamic columns"
output:
flexdashboard::flex_dashboard:
orientation: rows
runtime: shiny
---
```{r setup, include=FALSE}
library(shiny)
library(knitr)
library(flexdashboard)
```
Column {.sidebar data-width=130}
-----------------------------------------------------------------------
```{r}
numericInput(
"ncols",
label = "number of columns",
value = 3
)
```
```{r column_generator, include=FALSE}
output <- reactive({
out <- NULL
for (i in 1:input$ncols) {
out <- c(out, knit_expand(text = "### column: {{i}}"))
}
out
})
```
Column {data-width=650}
-----------------------------------------------------------------------
`r reactive({paste(knit(text = output()), collapse = '\n')})`
Я считаю, что я близок к решению, потому что я получаю следующий вывод в моем теле flexdashboard:
столбец: 1 ### столбец: 2 ### столбец: 3
Однако этот текст не отображается в три столбца с помощью knit()
.