У меня есть таблица на гибкой панели инструментов, количество столбцов которой может меняться. Я могу вычислить выравнивание столбцов на лету (выравнивание по умолчанию рассматривает $23.45
как вектор символов и, таким образом, выравнивает значение по левому краю, хотя это число и должно быть выровнено по правому краю). Проблема в том, что я не могу передать это выравнивание обратно в renderTable
в качестве значения align
, потому что это реактивное значение.
Как я могу передать реактивное выравнивание обратно аргументу align
функции renderTable
? (или альтернативу, которая позволяет мне визуализировать таблицу с реактивным выравниванием)
MWE
---
title: "test"
output: flexdashboard::flex_dashboard
runtime: shiny
---
```{r}
library(flexdashboard)
library(shiny)
```
Inputs {.sidebar}
-------------------------------------
```{r}
selectInput(
"ncols",
label = "How many columns?",
choices = 1:5,
selected = 5
)
```
Column
-------------------------------------
### Test
```{r}
nc <- reactive({input$ncols})
aln <- reactive({substring('lllrr', 1, nc())})
renderTable({
x <- CO2[1:5, seq_len(nc()), drop = FALSE]
x[, 1] <- as.character(x[, 1])
x[3, 1] <- '<b>Mc1</b>'
x
}, align = aln(), sanitize.text.function = function(x) x)
```
Результаты в:
Warning: Error in .getReactiveEnvironment()$currentContext: Operation not
allowed without an active reactive context. (You tried to do something
that can only be done from inside a reactive expression or observer.)