Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практика ТОИ / Практика ТОИ - 2.docx
Скачиваний:
97
Добавлен:
21.04.2015
Размер:
1.56 Mб
Скачать

Отображение реакции объектов

Рассмотрим как осуществить автоматическое реагирование Shiny приложения на различные действия пользователя, когда он воздействует на объекты, обладающие реакцией (реактивные объекты), т.е. меняющие свои выходные значения при изменении входных воздействий.

Это делается в два этапа:

  • добавляются нужные реактивные объекты в пользовательский интерфейс ui.R;

  • пишется код сценария server.R, где для вывода используются выходные значения объектов.

Этап 1:

Shiny включает целое семейство функций вывода, которые формируют выходные значения объекта. Каждая функция формирует определенный тип выходного значения.

Функция вывода

Выводит

htmlOutput

чистый HTML

imageOutput

изображение

plotOutput

график

tableOutput

таблица

textOutput

текст

uiOutput

чистый HTML

verbatimTextOutput

текст

Выходные значения можно добавлять к пользовательскому интерфейсу аналогично тому, как добавлялись HTML элементы или виджеты. Размещать функции вывода внутри sidebarPanel() или mainPanel() в ui.R сценарии.

Например, в сценарии ui.R используется функция вывода textOutput() для добавления реакции в виде текстовой строки в основную панель mainРanel() приложения censusVis:

#ui.R

shinyUI(fluidPage(

titlePanel("censusVis"),

sidebarLayout(

sidebarPanel(

helpText("Формирование демографической карты

по данным переписи населения США 2010 года."),

selectInput("var",

label = "Выберите переменную для отображения",

choices = c("Процент белых", "Процент черных",

"Процент испанцев", "Процент азиатов"),

selected = "Процент белых"),

sliderInput("range",

label = "Диапазон интересов:",

min = 0, max = 100, value = c(0, 100))

),

mainPanel(

textOutput("text1"),

textOutput("text2")

)

)

))

Отметим, что функция textOutput() использует аргументы “text1” и “text2”. Каждая функция вывода использует один аргумент в виде строковой переменной и Shiny использует ее как имя реакции объекта.

Этап 2:

Размещая функции вывода в ui.R мы просто указываем место, где будет отображаться реакция того или иного объекта. Для отображения реакции строится код в server.R. Код должен располагаться в “безымянной” функции располагаемой внутри shinyServer() в server.R сценарии. “Безымянные” функции играют специальную роль – они позволяют выстраивать объекты друг за другом путем указания нужных аргументов. Каждый объект описывается отдельно. Имена объектов должны соответствовать именам аргументов введенных в ui.R. Например, в сценарии server.R output$text1 соответствует textOutput("text1") в скрипте ui.R:

#server.R

shinyServer(

function(input, output) {

output$text1 <- renderText({

paste("Вы выбрали: ", input$var)

})

output$text2 <- renderText({

paste("Выбран диапазон от", input$range[1], "до", input$range[2])

})

}

)

Каждое обращение к output должно осуществляться с помощью render* функций. Эти функции перехватывают R выражения и выполняют нужную предобработку. Необходимо использовать render* функции, которые соответствуют типу реакции объекта.

Render функция

Создает

renderImage

изображение (сохраняет ссылку на файл)

renderPlot

график

renderPrint

вывод на печать

renderTable

фрейм данных, матрица, другая структурированная таблица

renderText

символьная строка

renderUI

Shiny тег объект или HTML

Каждая render* функция имеет один аргумент: R выражение заключенное в фигурные скобки {}. Выражение может состоять из одной строки кода, а может включать много команд. Его можно рассматривать как набор инструкций данных Shiny для запоминания. Shiny запустит эти инструкции когда пользователь первый раз запустит приложение и будет перезапускать их каждый раз когда выходные значения объекта изменятся при изменении входных значений пользователем.

Для того, чтобы это работало, выражение должно возвращать правильный тип выходного значения (текст, график, фрейм данных и т.п.). В случае, если объект не возвратит значения или оно будет не соответствовать указанному типу, будет выведено сообщение об ошибке.

Соседние файлы в папке Практика ТОИ