Итак, я делаю блестящее приложение, которое принимает несколько входов и создает несколько графиков и таблиц этих входов.
Пример кода RenderTable для создания одной таблицы приведен ниже:
output$Table1 <-
renderTable(data.frame(Shape = c("\u25CF", "\u25B2", "\u25FC", ""),
"Genes" = c(input$custom_genes1, "Mean"),
Analysed_values = c(t(analysis1()), mean(analysis1()))),
striped = TRUE, bordered = TRUE, hover = TRUE)
ГдеShape - это символ на графике, «Genes» - это гены, выбранные с использованием selectizeInput, а analysis1 () - результат реактивного вычисления, определенного ранее в коде.
Однако у меня есть 8-9 таблиц, которыедолжны отображаться в зависимости от различных флажков и т. д. Вместо того, чтобы копировать код и заменять все соответствующие значения, я хотел создать функцию, которую я мог бы использовать для быстрого отображения всех таблиц, и если мне нужно было изменить форматированиеили добавить что-нибудь позже, я могу просто отредактировать функцию, а не каждую таблицу в отдельности.
Я попытался создать функцию многократного использования, используя следующий код:
construct_table <- function(genes_select, dataset){
renderTable(data.frame(Shape = c("\u25CF", "\u25B2", "\u25FC", ""),
"Genes" = genes_select,
Analysed_values = c(t(dataset), mean(dataset))),
striped = TRUE, bordered = TRUE, hover = TRUE)
}
И затем упроститьвызовите каждую таблицу напрямую:
output$Table1 <- construct_table(input$custom_genes1, analysis1())
Это работает в том смысле, что создает таблицу, используя начальные входные значения,но не делает стол реактивным.
Как я могу вызвать реактивную функцию renderTable внутри нормальной функции, или есть еще одна реактивная функция, которую я упустил из виду, что я могу вложить в нее функцию renderTable, которая работает так же, как нормальная функция?