Блестящий пакет в программировании на 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 package library (shiny) # define a page with fluid layout ui <- 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 package library (shiny) # define fluid page layout ui <- 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 shinyApp shinyApp (ui = ui, server = server) |
Выход:
- reactive (): создает реактивное выражение. Реактивное выражение - это выражение, результат которого со временем будет меняться. Reactive () обертывает обычное выражение для создания реактивного выражения.
Syntax:
reactive(x, env = parent.frame(), quoted = FALSE, label = NULL)
Параметр | Описание |
Икс | Выражение. |
env | Родительская среда для реактивного выражения. |
цитируется | Это выражение цитируется? По умолчанию это ЛОЖЬ. Это полезно, когда вы хотите использовать выражение, которое хранится в переменной. |
метка | Ярлык для реактивного выражения. |
Пример:
р
# import shiny package library (shiny) # define fluid page layout ui <- 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 shinyApp shinyApp (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 package library (shiny) # define fluid page layout ui = 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 shinyApp shinyApp (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 package library (shiny) # define fluid page layout ui <- 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 shinyApp shinyApp (ui = ui, server = server) |
Выход:
Здесь выход не изменяется с входными значениями до тех пор, пока не будет нажата кнопка обновления.
- actionButton (): создает кнопку действия или ссылку. Их начальное значение равно нулю и увеличивается на единицу при каждом нажатии.
Syntax:
actionButton(inputId, label, icon = NULL, width = NULL, …)
actionLink(inputId, label, icon = NULL, …)
Параметр | Описание |
inputId | Входной слот, который будет использоваться для доступа к значению. |
метка | Содержимое кнопки или ссылки. |
значок | Необязательный значок () для отображения на кнопке. |
ширина | Ширина ввода (например, «200 пикселей» или «100%»). |
…. | Именованные атрибуты, применяемые к кнопке или ссылке. |
Пример:
р
# import shiny package library (shiny) # define fluid page layout ui <- 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 shinyApp shinyApp (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 package library (shiny) # define fluid page layout ui <- 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 shinyApp shinyApp (ui = ui, server = server) |
Выход:
- textInput (): создает метку ввода текста.
Syntax:
textInput(inputId, label, value = “”, width = NULL, placeholder = NULL)
Параметр | Описание |
inputId | Входной слот, который будет использоваться для доступа к значению. |
метка | Содержимое кнопки или ссылки. |
ценить | Начальное значение. |
ширина | Ширина ввода (например, «200 пикселей» или «100%»). |
заполнитель | Строка символов, подсказывающая пользователю, что можно ввести в элемент управления. |
Пример:
р
# import shiny package library (shiny) # define fluid page layout ui <- fluidPage ( textInput ( "txt" , "Enter yoour text here" , "Empty" ), verbatimTextOutput ( "value" ) ) server <- function (input, output) { output$value <- renderText ({ input$text }) } # create shiny app object # using shinyApp shinyApp (ui, server) |
Выход
- textOutput (): создает элемент вывода текста. Отображать реактивную выходную переменную в виде текста на странице приложения.
Syntax:
textOutput(outputId, container = if (inline) span else div, inline = FALSE)
Параметр | Описание |
outputId | Выходная переменная, из которой нужно прочитать значение. |
контейнер | Функция для создания HTML-элемента, содержащего текст. |
в линию | Используйте встроенный (span ()) или блочный контейнер (div ()) для вывода. |
Пример:
р
# import shiny package library (shiny) # define fluid page layout ui <- 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 shinyApp shinyApp (ui = ui, server = server) |
Выход:
- wellPanel (): создает панель со слегка вставленной рамкой и серым фоном.
Syntax:
wellPanel(…)
Параметр | Описание |
… | Элементы пользовательского интерфейса для включения в панель. |
Пример:
р
# import shiny package library (shiny) # define fluid page layout ui <- 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 shinyApp shinyApp (ui = ui, server = server) |
Выход:
Обратите внимание, что гистограмма находится внутри серого поля (wellPanel).