Как создавать интерактивные веб-приложения с помощью Shiny в R

Kak Sozdavat Interaktivnye Veb Prilozenia S Pomos U Shiny V R



Благодаря фреймворку R Shiny, пакету RStudio, создавать динамические веб-приложения с помощью R относительно легко. Преимущество Shiny заключается в том, что он позволяет разместить ваш код R в Интернете, делая его более доступным для более широкого круга пользователей. С помощью R Shiny вы можете создавать очень мощные отчеты о данных и визуальные эффекты, которые позволяют пользователю анализировать набор данных. Наряду с компонентами Shiny для оформления содержимого программы можно использовать элементы HTML. Сегодняшняя статья познакомит вас с процессом создания интерактивного веб-приложения с использованием пакета R Shiny. Для этого убедитесь, что у вас уже установлена ​​программа «RStudio».

Установите пакет Shiny в RStudio.

Прежде чем перейти к созданию интерактивного веб-приложения в RStudio, в нем должен быть уже установлен пакет «Shiny». Для этого вам необходимо развернуть меню «Инструменты» RStudio, а затем опцию «Установить пакеты». В открывшемся окне вам необходимо указать пакет, который вы хотите установить, то есть «блестящий», и нажать кнопку «Установить». RStudio установит пакет Shiny в консоль RStudio.







Начните работу с Shiny в R

Чтобы начать работу с Shiny в R, вам необходимо создать новый файл R, используя меню «Файл», расположенное в первую очередь RStudio. Разверните его и используйте параметр «Новый файл», а затем параметр «R Script». Файл сценария «без названия» будет открыт в RStudio. Переименуйте его в файл «R» в нужном месте.



Теперь загрузите необходимые пакеты, необходимые для создания интерактивного приложения в R, т. е. используя «библиотечную» функцию R. Операторы «if» используются для установки пакетов, которые не были установлены ранее. Пакет Shiny используется для создания интерактивного интерфейса веб-приложений, а также некоторых графических визуализаций. Пакет «dplyr» в основном используется для облегчения манипулирования данными в R за счет использования некоторых полезных функций.



Наконец, пакет «ggplot2» загружается как отличный источник визуализации данных, позволяющий создавать настраиваемые и мощные графики.





если ( ! требуется пространство имен ( 'блестящий' , тихо '=' истинный ) ) {

установить. пакеты ( 'блестящий' )

}

если ( ! требуется пространство имен ( 'дплир' , тихо '=' истинный ) ) {

установить. пакеты ( 'дплир' )

}

если ( ! требуется пространство имен ( 'ggplot2' , тихо '=' истинный ) ) {

установить. пакеты ( 'ggplot2' )

}

библиотека ( блестящий )

библиотека ( дплир )

библиотека ( ggplot2 )

Создайте интерактивную систему оценивания экзаменов

В рамках этого руководства мы создадим «Систему выставления оценок на экзаменах», чтобы учащиеся могли получать свои оценки по оценкам, полученным из 100. Предоставленный сценарий представляет собой компонент «ui» приложения Shiny, который определяет дизайн и внешний вид программа. Программа создает LiquidPage — адаптируемый дизайн, который можно масштабировать в соответствии с окном браузера.

«titlePanel» и «sidebarLayout» являются потомками «fluidPage». Название программы «Система оценки экзаменов» — это все, что отображается в «titlePanel». «sidebarPanel» и «mainPanel» — это два раздела, на которые «sidebarLayout» разделяет приложение. В «sidebarPanel» включена пара входных данных: «textAreaInput» с именем «score» и «actionButton» с именем «calculate».



Для каждого учащегося можно ввести одну оценку в строке с помощью «textAreaInput». Оценку можно запустить с помощью кнопки «actionButton». В «mainPanel» присутствует пара выходных данных: «tableOutput» с именем «Result» плюс «plotOutput» с именем «ResultGraph». И «tableOutput», и «plotOutput» представят результаты расчета в виде графика.

пользовательский интерфейс <- жидкостьстраница (

titlePanel ( «Система оценивания экзаменов» ) ,
боковая панельМакет (
боковая панельПанель (
textAreaInput ( 'счет' , «Введите баллы учащихся (по одному в строке):» , '' ) ,
кнопка действия ( 'вычислить' , «Давайте посчитаем оценки» )
) ,
ГлавнаяПанель (
таблицаВывод ( 'Результат' ) ,
вывод сюжета ( «График Результатов» )
) ) )

Метод сервера устанавливает серверную логику приложения. Оценки учащихся изначально сохраняются в реактивной переменной с именем «данные». Для этого кнопка «Рассчитать» контролируется методом R «observeEvent». После срабатывания кнопки код первоначально преобразует значения, которые вводятся в текстовое поле ввода, в числовые значения.

За каждой партией следует разрыв строки с использованием символа «\n» для ввода новой партитуры на следующей строке. Метод помещает любую найденную оценку в переменную «data». Если пользователь не ввел оценку, метод отображает сообщение об ошибке.

сервер <- функция ( ввод, вывод ) {

данные <- реактивнаяВал ( НУЛЕВОЙ )

наблюдатьсобытие ( ввод $ вычислить, {

счет <- как. числовой ( удалить из списка ( стрсплит ( вход $оценка, ' \п ' ) ) )

если ( длина ( счет ) > 0 ) {

данные ( счет )

} еще {

данные ( НУЛЕВОЙ )

показатьмодальный ( модальныйдиалог (

заголовок '=' 'Ошибка' ,

«Ошибка: Пожалуйста, добавьте значение!» ,

easyClose '=' истинный

) )

}

} )

Два вывода: «output$Result» и «output$ResultGraph» указываются для отображения оценок учащихся и достигнутых оценок. Динамический метод renderTable() создает таблицу данных тестовых оценок и оценок учащегося, которая помечается как «output$Result». Метод renderPlot(), который также является реактивным, генерирует гистограмму для оценок учащихся и аналогичным образом сохраняет ее в выводе «output$ResultGraph».

Поэтому они будут пересматриваться каждый раз при обновлении входных данных. Выражение if (!is.null(data())) определяет, являются ли получаемые данные нулевыми. Скрипт оператора «if» выполняется, если он не пуст. Вектор оценок учащихся составляет входные «данные». Каждому учащемуся выставляется оценка на основе его баллов с помощью метода case_when(). Фрейм данных, содержащий оценки учащихся и контрольные отметки, создается с помощью метода data.frame(). Во фрейм данных добавляются следующие столбцы: «Студент», «Оценка» и «Оценка». Распределение оценок компилируется в таблицу под названием «GradeCount» с помощью метода table().

вывод $Результат <- рендертаблица ( {

если ( ! является. нулевой ( данные ( ) ) ) {

оценки <- случай_когда (

данные ( ) > 80 ~ 'А' ,

данные ( ) > 60 ~ 'Б' ,

данные ( ) > 40 ~ 'С' ,

данные ( ) > 30 ~ 'Д' ,

истинный ~ 'Ф'

)

данные. рамка ( Студент '=' 1 : длина ( данные ( ) ) , Счет '=' данные ( ) , Оценка '=' оценки )

}

} )

вывод $ResultGraph <- рендерплот ( {

если ( ! является. нулевой ( данные ( ) ) ) {

оценки <- случай_когда (

данные ( ) > 80 ~ 'А' ,

данные ( ) > 60 ~ 'Б' ,

данные ( ) > 40 ~ 'С' ,

данные ( ) > 30 ~ 'Д' ,

истинный ~ 'Ф'

)

ГрадеКаунт <- стол ( оценки )

Гистограмма создается с использованием библиотеки «ggplot2». Count (общее количество учащихся, получивших каждую оценку) и столбец Оценка создаются в DataFrame. Гистограмма с данными «Уровень» на «оси X» и данными «Количество» на «оси Y» создается с использованием метода geom_bar(). Опция stat = «identity» указывает ggplot2 использовать фактические данные без каких-либо преобразований. Заголовок, метка оси X и метка оси Y добавляются с помощью метода «labs». Цвета полосок назначаются с помощью метода Scale_fill_manual(). Ненужные линии сетки и компоненты наложения удаляются с помощью метода theme_minimal(). Метод ShinyApp(ui, server) создает приложение.

ggplot ( данные '=' данные. рамка ( Оценка '=' имена ( ГрадеКаунт ) , Считать '=' как. числовой ( ГрадеКаунт ) ) ,
да ( Икс '=' Оценка и '=' Посчитай, наполни '=' Оценка ) ) +
геом_бар ( статистика '=' 'личность' ) +
лаборатории ( заголовок '=' «Распределение оценок» ,
Икс '=' 'Оценка' ,
и '=' 'Считать' ) +
Scale_fill_manual ( ценности '=' с ( 'А' '=' 'зеленый' , 'Б' '=' 'фиолетовый' , 'С' '=' 'розовый' ,
'Д' '=' 'апельсин' , 'Ф' '=' 'красный' ) ) +
theme_minimal ( )
}
} )
}
блестящее приложение ( интерфейс, сервер )

Запустив этот код, мы получили интерактивный интерфейс, в котором мы добавили несколько оценок и нажали кнопку «Подсчитаем оценки».

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

Заключение

В этом руководстве объясняется важность использования пакета Shiny на языке R через RStudio. В дополнение к нашему объяснению мы создали интерактивное веб-приложение для системы оценок учащихся в коде R, используя пакет «Shiny».