Блестящий пакет в программировании на R
Пакет - подходящий способ организовать работу и поделиться ею с другими. Пакеты на языке R представляют собой набор функций R, скомпилированного кода и примеров данных. Они хранятся в каталоге под названием «библиотека» в среде R. По умолчанию R устанавливает набор пакетов во время установки. Один из самых важных пакетов в R - это пакет Shiny. Shiny - это пакет R, который упрощает создание интерактивных веб-приложений прямо из R. Он помогает размещать автономные приложения на веб-странице или встраивать их в документы R Markdown или создавать информационные панели. Также можно расширить приложения Shiny с помощью тем CSS, HTML-виджетов и действий JavaScript.
Установка
Чтобы использовать пакет в программировании на R, необходимо сначала установить пакет. Эту задачу можно выполнить с помощью команды install.packages («packagename») . Чтобы установить весь пакет Shiny , введите следующее:
install.packages («блестящий»)

Чтобы установить последние разработки непосредственно с GitHub, запустите вместо этого:
если (! require ("пульты"))
install.packages («пульты»)
удаленно :: install_github ("rstudio / shiny")
Важные глагольные функции в блестящем пакете
- fluidPage (): создает страницу с гибким макетом. Гибкий макет страницы состоит из строк, которые, в свою очередь, включают столбцы. Строки существуют для того, чтобы их элементы располагались в одной строке, а столбцы - для определения размера горизонтального пространства в сетке шириной 12 единиц. Гибкие страницы масштабируют свои компоненты в реальном времени, чтобы заполнить всю доступную ширину браузера.
Syntax:
fluidPage(…, title = NULL, theme = NULL)
| Параметр | Описание |
| … | Элементы для включения на страницу. |
| заглавие | Заголовок окна браузера. |
| тема | Альтернативная таблица стилей Bootstrap. |
Пример:
Это базовый шаблон блестящего приложения.
р
# import shiny packagelibrary (shiny) # define a page with fluid layoutui <- fluidPage ( h1 ( "GeeksforGeeks article on shiny package in R" ), p (style = "font-family:Impact" , "My first shiny app" ))server <- function (input, output) {} shinyApp (ui = ui, server = server) |
Выход:

- shinyApp (): он создает объекты приложения Shiny либо из явной пары пользовательский интерфейс / сервер, либо в обход пути к каталогу, содержащему приложение Shiny.
Syntax:
shinyApp(ui, server, onStart = NULL, options = list(), uiPattern = “/”, enableBookmarking = NULL)
shinyAppDir(appDir, options = list())
shinyAppFile(appFile, options = list())</p
| Параметр | Описание |
| ui | Определение пользовательского интерфейса приложения. |
| сервер | У него есть три параметра: ввод, вывод и сеанс. Он вызывается один раз для каждого сеанса, чтобы гарантировать независимость каждого приложения. |
| onStart | Функция, которая будет вызываться перед фактическим запуском приложения. |
| параметры | Параметры, которые следует передать в runApp. |
| uipattern | Регулярное выражение, которое будет применяться к каждому Запрос GET, чтобы определить, следует ли использовать пользовательский интерфейс для обработки запроса. |
| включить закладку | Может быть «url», «server» или «disable». Значение по умолчанию - NULL. |
| appDir | Путь к каталогу, содержащему приложение Shiny. |
| appFile | Путь к файлу .R, содержащему приложение Shiny. |
Пример:
р
# import shiny packagelibrary (shiny) # define fluid page layoutui <- fluidPage ( sliderInput (inputId = "num" , label = "Choose a number" , value = 10, min = 1, max = 1000), plotOutput ( "hist" )) server <- function (input, output){ output$hist <- renderPlot ({ hist ( rnorm (input$num)) })} # create shiny app object# using shinyAppshinyApp (ui = ui, server = server) |
Выход:

- reactive (): создает реактивное выражение. Реактивное выражение - это выражение, результат которого со временем будет меняться. Reactive () обертывает обычное выражение для создания реактивного выражения.
Syntax:
reactive(x, env = parent.frame(), quoted = FALSE, label = NULL)
| Параметр | Описание |
| Икс | Выражение. |
| env | Родительская среда для реактивного выражения. |
| цитируется | Это выражение цитируется? По умолчанию это ЛОЖЬ. Это полезно, когда вы хотите использовать выражение, которое хранится в переменной. |
| метка | Ярлык для реактивного выражения. |
Пример:
р
# import shiny packagelibrary (shiny) # define fluid page layoutui <- fluidPage ( textInput (inputId = "num" , label = "Choose a number" , value = "" , width = 100, placeholder = NULL ), plotOutput ( "hist" ), verbatimTextOutput ( "stats" ))server <- function (input, output){ # use reactive to create # a reactive expression data <- reactive ({ rnorm (input$num)}) output$hist <- renderPlot ({ hist ( data ())}) output$stats <- renderPrint ({ summary ( data ())})} # create shiny app object# using shinyAppshinyApp (ui = ui, server = server) |
Выход:

Теперь измените входное значение с 50 на 100, чтобы посмотреть, что произойдет.

Выходные значения (гистограмма и сводка) также изменяются с чередованием входных значений, т. Е. Приложение обладает реактивностью.
- Наблюдение за событием (): запускает код для запуска на серверах. Реагируйте на «событийные» реактивные входные данные, значения и выражения.
Syntax:
observeEvent(eventExpr, handlerExpr, event.env = parent.frame(), event.quoted = FALSE, handler.env = parent.frame(), handler.quoted = FALSE, label = NULL, suspended = FALSE, priority = 0, domain = getDefaultReactiveDomain(), autoDestroy = TRUE, ignoreNULL = TRUE, ignoreInit = FALSE, once = FALSE)
| Параметр | Описание |
| eventExpr | Выражение, представляющее событие. Это может быть простое или сложное реактивное выражение. |
| handler.Expr | Выражение, вызываемое всякий раз, когда eventExpr становится недействительным. |
| event.env | Родительская среда для eventExpr. По умолчанию это вызывающая среда. |
| event.quoted | Возвращает независимо от того, заключено ли выражение eventExpr в кавычки или нет. По умолчанию это ЛОЖЬ. |
| handler.env | Родительская среда для handlerExpr. По умолчанию это вызывающая среда. |
| handler.quoted | Возвращает, заключено ли выражение handlerExpr в кавычки или нет. По умолчанию это ЛОЖЬ. |
| метка | Метка для наблюдателя или реактивного |
| приостановленный | Если TRUE, запустить наблюдателя в приостановленном состоянии. |
| приоритет | Целое или числовое значение, определяющее приоритет с которым должен выполняться этот наблюдатель. Допускаются положительные, отрицательные и нулевые значения. |
| автоуничтожение | Если TRUE (по умолчанию), наблюдатель будет автоматически уничтожается, когда его домен (если таковой имеется) заканчивается. |
| ignoreNULL | Должно ли запускаться действие, когда на входе ПУСТО (NULL). |
| ignoreInit | Если ИСТИНА, то при первом создании / инициализации этого наблюдаемого события, игнорировать handlerExpr (второй аргумент), независимо от того, в противном случае он должен работать или нет. По умолчанию - ЛОЖЬ. |
| однажды | Следует ли немедленно уничтожить это наблюдениеEvent после при первом запуске кода в handlerExpr. |
Пример:
р
# import shiny packagelibrary (shiny) # define fluid page layoutui = fluidPage ( textInput (inputId = "num" , label = "Enter a numeric value" , value = "10" ), actionButton ( "button" , "Calculate" ), column (8, tableOutput ( "table" ))) server = function (input, output){ # Take an action every time button is pressed observeEvent (input$button, { cat ( "Showing" , input$num, "rows
" ) }) # Take a reactive dependency # on input$num, but not on any # of the stuff inside the function df <- eventReactive (input$button, { head (cars, input$num) }) output$table <- renderTable ({ df () })} # create shiny app object# using shinyAppshinyApp (ui, server) |
Выход:


- eventReactive (): реактивное выражение, которое реагирует только на определенные значения. Реагируйте на «событийные» реактивные входные данные, значения и выражения.
Syntax:
eventReactive(eventExpr,
valueExpr,
event.env = parent.frame(),
event.quoted = FALSE,
value.env = parent.frame(),
value.quoted = FALSE,
label = NULL,
domain = getDefaultReactiveDomain(),
ignoreNULL = TRUE,
ignoreInit = FALSE)
| Параметр | Описание |
| eventExpr | Выражение, представляющее событие, может быть простым или сложным реактивным выражением. |
| valueExpr | Он производит возвращаемое значение eventReactive. Он будет выполнен в области выделения (). |
| event.env | Родительская среда для eventExpr. По умолчанию это вызывающая среда. |
| event.quoted | Возвращает независимо от того, заключено ли выражение eventExpr в кавычки или нет. По умолчанию это ЛОЖЬ. |
| value.env | Родительская среда для valueExpr. По умолчанию это вызывающая среда. |
| value.quoted | Возвращает независимо от того, заключено ли выражение valueExpr в кавычки или нет. По умолчанию это ЛОЖЬ. |
| ignoreNULL | Должно ли запускаться действие, когда на входе ПУСТО (NULL). |
| ignoreInit | Если ИСТИНА, то при первом создании / инициализации этого наблюдаемого события, игнорировать handlerExpr (второй аргумент), независимо от того, в противном случае он должен работать или нет. По умолчанию - ЛОЖЬ. |
Пример:
р
# import shiny packagelibrary (shiny) # define fluid page layoutui <- fluidPage ( sliderInput (inputId = "num" , label = "Choose a number" , value = 25, min = 1, max = 100), actionButton (inputId = "go" , label = "Update" ), plotOutput ( "hist" )) server <- function (input, output){ data <- eventReactive (input$go, { rnorm (input$num) }) output$hist <- renderPlot ({ hist ( data ()) })} # create shiny app object# using shinyAppshinyApp (ui = ui, server = server) |
Выход:

Здесь выход не изменяется с входными значениями до тех пор, пока не будет нажата кнопка обновления.

- actionButton (): создает кнопку действия или ссылку. Их начальное значение равно нулю и увеличивается на единицу при каждом нажатии.
Syntax:
actionButton(inputId, label, icon = NULL, width = NULL, …)
actionLink(inputId, label, icon = NULL, …)
| Параметр | Описание |
| inputId | Входной слот, который будет использоваться для доступа к значению. |
| метка | Содержимое кнопки или ссылки. |
| значок | Необязательный значок () для отображения на кнопке. |
| ширина | Ширина ввода (например, «200 пикселей» или «100%»). |
| …. | Именованные атрибуты, применяемые к кнопке или ссылке. |
Пример:
р
# import shiny packagelibrary (shiny) # define fluid page layoutui <- fluidPage ( sliderInput ( "obs" , "Number of observations" , 0, 1000, 500), actionButton ( "goButton" , "Go!" , class = "btn-success" ), plotOutput ( "distPlot" )) server <- function (input, output){ output$distPlot <- renderPlot ({ input$goButton dist <- isolate ( rnorm (input$obs)) hist (dist) })} # create shiny app object# using shinyAppshinyApp (ui, server) |
Выход:

Выходные данные обновляются, как только нажата кнопка actionButton (Go!) .

- checkboxGroupInput (): создает группу флажков, которые можно использовать для независимого переключения нескольких вариантов. Сервер получит ввод в виде вектора символов выбранных значений.
Syntax:
checkboxGroupInput(inputId, label, choices = NULL, selected = NULL, inline = FALSE, width = NULL, choiceNames = NULL, choiceValues = NULL)
Параметр | Описание |
| inputId | Входной слот, который будет использоваться для доступа к значению. |
| метка | Содержимое кнопки или ссылки. |
| выбор | Список значений, для которых нужно установить флажки. Если элементы список получает имя, тогда пользователю отображается это имя, а не значение. |
| выбранный | Первоначальный выбор. |
| в линию | Если TRUE, визуализируйте варианты по горизонтали. |
| ширина | Ширина ввода (например, «200 пикселей» или «100%»). |
| choiceValues, choiceNames | Список имен и ценностей. |
Пример:
р
# import shiny packagelibrary (shiny) # define fluid page layoutui <- fluidPage ( checkboxGroupInput ( "icons" , "Choose icons:" , choiceNames = list ( icon ( "dog" ), icon ( "cat" ), icon ( "fish" ), icon ( "bug" )), choiceValues = list ( "dog" , "cat" , "fish" , "bug" )), textOutput ( "txt" )) server <- function (input, output, session){ output$txt <- renderText ({ icons <- paste (input$icons, collapse = ", " ) paste ( "You chose" , icons) })} # create shiny app object# using shinyAppshinyApp (ui = ui, server = server) |
Выход:

- textInput (): создает метку ввода текста.
Syntax:
textInput(inputId, label, value = “”, width = NULL, placeholder = NULL)
| Параметр | Описание |
| inputId | Входной слот, который будет использоваться для доступа к значению. |
| метка | Содержимое кнопки или ссылки. |
| ценить | Начальное значение. |
| ширина | Ширина ввода (например, «200 пикселей» или «100%»). |
| заполнитель | Строка символов, подсказывающая пользователю, что можно ввести в элемент управления. |
Пример:
р
# import shiny packagelibrary (shiny) # define fluid page layoutui <- fluidPage ( textInput ( "txt" , "Enter yoour text here" , "Empty" ), verbatimTextOutput ( "value" )) server <- function (input, output){ output$value <- renderText ({ input$text })} # create shiny app object# using shinyAppshinyApp (ui, server) |
Выход
- textOutput (): создает элемент вывода текста. Отображать реактивную выходную переменную в виде текста на странице приложения.
Syntax:
textOutput(outputId, container = if (inline) span else div, inline = FALSE)
| Параметр | Описание |
| outputId | Выходная переменная, из которой нужно прочитать значение. |
| контейнер | Функция для создания HTML-элемента, содержащего текст. |
| в линию | Используйте встроенный (span ()) или блочный контейнер (div ()) для вывода. |
Пример:
р
# import shiny packagelibrary (shiny) # define fluid page layoutui <- fluidPage ( textInput (inputId = "Name" , label = "Enter your name" ), textOutput ( "txt" )) server <- function (input, output, session){ output$txt <- renderText ({ Name <- paste (input$Name, collapse = ", " ) paste ( "Welcome! to geeksforgeeks " , Name) })} # create shiny app object# using shinyAppshinyApp (ui = ui, server = server) |
Выход:

- wellPanel (): создает панель со слегка вставленной рамкой и серым фоном.
Syntax:
wellPanel(…)
| Параметр | Описание |
| … | Элементы пользовательского интерфейса для включения в панель. |
Пример:
р
# import shiny packagelibrary (shiny) # define fluid page layoutui <- fluidPage ( sliderInput (inputId = "num" , label = "Choose a number" , value = 25, min = 1, max = 100), # define plot inside # a wellPanel wellPanel ( plotOutput ( "hist" ))) server <- function (input, output){ output$hist <- renderPlot ({ hist ( rnorm (input$num), main = input$title) })} # create shiny app object# using shinyAppshinyApp (ui = ui, server = server) |
Выход:

Обратите внимание, что гистограмма находится внутри серого поля (wellPanel).