r: Рендеринг Kable с помощью Shiny в Flexdashboard

Есть ли способ использовать функцию render__ для рендеринга Kable (knitr::) с Shiny в Flexdashboard? Я нахожу информацию об общем рендеринге Shiny-Kable, но не конкретно о Flexdashboard. Ссылки вроде этой one полезны, но было бы здорово иметь возможность чтобы вызвать функцию render_ для отображения интерактивного кабеля Shiny в моем Flexdashboard. Любой совет будет потрясающим!

Спасибо!

Стефан


person Stefan Gouyet    schedule 01.10.2018    source источник


Ответы (3)


Ниже приведен один из способов заставить это работать в flexdashboard.

your_reactive_data <- reactive({ your_data })

shiny::renderUI(
    HTML(
        kable(your_reactive_data())
    )
)
person Engelstad    schedule 19.03.2019
comment
У меня не сработало, даже с {r results='asis'}, он все равно печатает просто ASCII |date |country |city |state | ||:----------|:-------|:----------|:-- .... вместо красивой таблицы - person IVIM; 03.05.2020

Приведенный выше ответ не сработал (для меня). Однако сработало использование xtable::xtable() вместо kable(). Они производят аналогичный вывод и имеют соответствующую функцию renderTable(). (в отличие от кабеля, у которого (пока) нет соответствующей функции renderKable().

renderTable({
  your_reactive_data() %>% xtable::xtable()
})

person IVIM    schedule 23.11.2020

Правильный способ сделать это (согласно этому документация) заключается в том, чтобы просто обернуть ваш код в пустую функцию:

output$mtcars_kable <- function() {
 req(input$mpg)
 mtcars %>%
   mutate(car = rownames(.)) %>%
   select(car, everything()) %>%
   filter(mpg <= input$mpg) %>%
   knitr::kable("html") %>%
   kable_styling("striped", full_width = F) %>%
   add_header_above(c(" ", "Group 1" = 5, "Group 2" = 6))
}

Я предполагаю, что это потому, что функция kable_styling уже генерирует HTML, вам не нужна функция render*().

person fahmy    schedule 12.03.2021