Как установить количество столбцов в работающей R flexdashboard - PullRequest
3 голосов
/ 24 января 2020

Мой вопрос является расширением вопроса 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().

...