Shiny - пакет от RStudio, позволяющий невероятно легко создавать интерактивные веб-приложения на языке R.
Ниже приведен перевод оригинально обучающего курса обучающего руководства на русском языке. Местами авторски мною адоптированный). Изображения взяты с оригинального курса.
Пакет Shiny доступен на репозитарии CRAN, так что его можно установить прямо с консоли R
install.packages("shiny")
Hello, Shiny - это пример простого приложения, которое генерирует случайное распределение на основании числа наблюдений и затем строит его.
Для запуска примера используйте код:
library(shiny)
runExample("01_hello")
Приложение Shiny состоит из двух компонентов: определение пользовательского интерфейса и скрипта для сервера.Исходный код для этих двух компонентов приведен ниже В последующих секциях руководства будет приведен весь код и будет дано объясение работы модели реактивных выражений для создания выходных данных. Сейчас только попробуйте поиграть с примером прилоения и посмотреть исходный код, чтобы получить представление о пакете.
Пользовательский интерфейс определен в исходном файле ui.R:
##ui.R
library(shiny)
# Define UI for application that draws a histogram
shinyUI(fluidPage(
# Application title
titlePanel("Hello Shiny!"),
# Sidebar with a slider input for the number of bins
sidebarLayout(
sidebarPanel(
sliderInput("bins",
"Number of bins:",
min = 1,
max = 50,
value = 30)
),
# Show a plot of the generated distribution
mainPanel(
plotOutput("distPlot")
)
)
))
На серверная сторона приложения показана ниже.
library(shiny)
# Define server logic required to draw a histogram
shinyServer(function(input, output) {
# Expression that generates a histogram. The expression is
# wrapped in a call to renderPlot to indicate that:
#
# 1) It is "reactive" and therefore should be automatically
# re-executed when inputs change
# 2) Its output type is a plot
output$distPlot <- renderPlot({
x <- faithful[, 2] # Old Faithful Geyser data
bins <- seq(min(x), max(x), length.out = input$bins + 1)
# draw the histogram with the specified number of bins
hist(x, breaks = bins, col = 'darkgray', border = 'white')
})
})
С одной стороны, это очень просто, случайное распределение создается для необходимого количества наблюдений, а затем строится график в виде гистограммы. Тем не менее, вы также заметите, что функция, которая возвращает график, завернута в вызов renderPlot. Комментарий ниже функции объясняет немного об этом: функция построения гистограммы “завернута” в renderPlot, чтобы показать, что: 1) она реактивная и поэтому должна быть автоматически пере-выполнена при изменении входных данных; 2) выход данной функции по типу является графиком
Но если оно показалось вам запутанным - не волнуйтесь. Мы будем обсуждать эту концепцию более детально далее.
Для того, чтобы создать собственное приложение с помощью Shine необходимо создать в рабочей папке новую папку и назвать ее именем создаваемого приложения. В папке приложения необходимо создать два документа ui.R и server.R. Например, можно скопировать содержание этих документов из вышеописанного примера. Путем изменнений в этих документах можно контроллировать приложение: переименуем заголовок или изменим цвет гистограммы.
Запустить созданное приложение можно: 1)через функцию runApp(“application_name”) 2)через кнопку Run (расположена в верхнем правом углу редактора) при открытом файле приложения.
Чтобы закрыть приложение нужно закрыть окно или Esc (Stop на консоли).
Другие примеры приложений:
system.file("examples", package="shiny")
runExample("01_hello") # a histogram
runExample("02_text") # tables and data frames
runExample("03_reactivity") # a reactive expression
runExample("04_mpg") # global variables
runExample("05_sliders") # slider bars
runExample("06_tabsets") # tabbed panels
runExample("07_widgets") # help text and submit buttons
runExample("08_html") # Shiny app built from HTML
runExample("09_upload") # file upload wizard
runExample("10_download") # file download wizard
runExample("11_timer") # an automated timer
Для того, чтобы создать приложение Shiny нужно: