Я пытаюсь создать панель мониторинга с помощью Quarto. Одна из первоначальных целей — подсчитать количество случаев в наборе данных (позже с помощью извлечения через API), когда панель мониторинга вызывается на сервере Shiny. В контексте «сервера» я визуализирую n-счет с помощью вывода $n <- renderText(nrow(data), а затем пытаюсь получить его в поле значений с помощью textOutput("n"). Однако я вижу код только в коробки, а не счет. Что я делаю неправильно (я пробовал несколько вариантов):
---
title: "Count N"
format: dashboard
server: shiny
---
```{r}
#| context: setup
data <- tibble::tibble(a = c(1, 2, 3)) # The data should always be retrieved from a server when the dashboard starts later, that's why I need the server context
```
## Row
```{r}
#| content: valuebox
#| title: "n1"
# renderText() with paste0
list(
value = textOutput("n1")
)
```
```{r}
#| content: valuebox
#| title: "n2"
# renderText() without paste0
list(
value = textOutput("n2")
)
```
```{r}
#| content: valuebox
#| title: "n3"
# it works with a blank (but boring) number
list(
value = 99
)
```
```{r}
#| context: server
n <- data |> nrow() |> as.character()
output$n1 <- renderText(n)
output$n2 <- renderText(paste0(n))
```
Мой вывод выглядит следующим образом:
Как описано здесь, вы можете использовать value_box
из пакета bslib
для создания динамического поля значений. Обязательно создайте такое значение reactive
:
---
title: "Count N"
format: dashboard
server: shiny
---
```{r}
#| context: setup
library(shiny)
data <- tibble::tibble(a = c(1, 2, 3)) # The data should always be retrieved from a server when the dashboard starts later, that's why I need the server context
```
## Row
```{r}
library(bslib)
library(bsicons)
value_box(
id = "card1",
title = "n1",
value = textOutput("n1")
)
```
```{r}
#| content: valuebox
#| title: "n3"
# it works with a blank (but boring) number
list(
value = 99
)
```
```{r}
#| context: server
n <- reactive({
data |> nrow() |> as.character()
})
output$n1 <- renderText({n()})
```
Выход: