Ответ 1
Пример данных
Конечно, все руководящие принципы, касающиеся выборочных данных, упомянутых в ответе на вопрос "как сделать отличный воспроизводимый пример R", также соблюдаются при создании вопросов, связанных с Shiny
. Подводя итог: убедитесь, что для запуска кода не требуются дополнительные файлы. Используйте примеры наборов данных, таких как mtcars
, или создайте несколько примеров данных с помощью data.frame()
. Если ваши данные очень сложны и эта сложность действительно необходима для иллюстрации проблемы, вы также можете использовать dput()
. Избегайте использования таких функций, как read.csv()
, если, конечно, у вас нет вопросов, связанных с такими функциями, как fileInput
.
Пример кода
Всегда уменьшайте ваш код до минимума, чтобы воспроизвести вашу ошибку или неожиданное поведение. Это включает в себя удаление вызовов на дополнительные файлы .CSS
и .js
и удаление ненужных функций в пользовательском ui
и на server
.
Блестящие приложения часто состоят из двух или трех файлов (ui.R
, server.R
и, возможно, global.R
), например, это демонстрационное приложение. Тем не менее, желательно размещать ваш код в виде одного скрипта, чтобы другие могли легко его запустить, не создавая эти файлы вручную. Это легко сделать:
- обертывание вашего интерфейса с помощью
ui <- fluidPage(…)
, - сервер с
server <- function(input,output, session) {…}
, - и впоследствии вызывая
shinyApp(ui, server)
.
Итак, простой скелет для начала может выглядеть следующим образом:
library(shiny)
ui <- fluidPage(
)
server <- function(input,output,session) {
}
shinyApp(ui, server)
Рабочий пример
Таким образом, принимая во внимание все вышесказанное, хороший пример Minimal, Complete и Verifiable для Shiny-приложения может выглядеть следующим образом:
library(shiny)
df <- data.frame(id = letters[1:10], value = seq(1,10))
ui <- fluidPage(
sliderInput('nrow', 'Number of rows', min = 1, max = 10, value = 5),
dataTableOutput('my_table')
)
server <- function(input, output, session) {
output$my_table <- renderDataTable({
df[1:input$nrow,]
})
}
shinyApp(ui, server)
Добавление CSS
Есть несколько способов добавить пользовательский CSS в приложение Shiny, как описано здесь. Предпочтительный способ добавить CSS в приложение Shiny в воспроизводимом примере - это добавить CSS в код, а не в отдельный файл. Это можно сделать, добавив строку в пользовательском ui
приложения, например, следующим образом:
tags$head(tags$style(HTML('body {background-color: lightblue;}'))),