Создайте новый файл с приложением Shiny. Запомните, в какой папке лежит файл app.R
. Удалите весь код из app.R
, скопируйте туда код из незаполненного шаблона template1.R
.
Скачайте файл Chile.csv
и поместите его в рабочую папку RStudio. Загрузите файл в R и сохраните данные в датафрейм dat
. Пользоваться функцией file.choose()
нельзя!
Удалите строки с пропущенными значениями в датафрейме dat
и сохраните изменения.
Известно, что в списке input
в переменной index
сохранена строка (тип character) с номером столбца в датафрейме dat
, который нас интересует. Напишите код, который сохраняет в переменную x
интересующий нас столбец.
Известно, что в списке input
в переменной color
сохранена строка с названием цвета. Напишите код, который делает следующее: если эта строка пустая (не содержит символов), то в переменную gcolor
сохраняется значение "grey"
, иначе — значение color
из вектора input
.
Известно, что в переменной x
сохранен вектор. Напишите код, который делает следующее: если вектор x
имеет тип numeric
, для вектора x
строится гистограмма с цветом заливки gcolor
из предыдущего пункта, если вектор x
имеет другой тип, для вектора x
строится столбиковая диаграмма с цветом заливки gcolor
.
Известно, что в списке input
в переменной reg
сохранено название интересующего нас региона или строка “All”, если нас интересуют все регионы. Напишите код, который делает следующее: если это название не “All”, а конкретный регион, то отфильтровывает строки, соответствующие этому региону, из датафрейма dat
и сохраняет их в dat
.
Откройте файл app.R
и дозаполните код для функции server()
, добавляя написанные кусочки кода внутрь renderPlot()
.
Скачайте файл Chile.csv
и поместите его в рабочую папку RStudio. Загрузите файл в R и сохраните данные в датафрейм dat
. Пользоваться функцией file.choose()
нельзя!
Удалите строки с пропущенными значениями в датафрейме dat
и сохраните изменения.
Посмотрите на пример поименованного вектора в R, который похож на словарь в Python (пары ключ-значение):
labs <- c(female = 1, male = 2)
Посмотрите на функцию setNames()
, которая работает как комбинация dict()
и zip()
в Python:
setNames(1:3, c("a", "b", "c"))
## a b c
## 1 2 3
Создайте поименованный вектор our_choices
, где ключами служат номера столбцов в dat
, а значениями — их названия.
Создайте поименованный вектор our_regs
, где ключами являются уникальные значения из столбца region
из dat
(приведите их к типу character
), а значениями — полные названия регионов: Central; Metropolitan Santiago area; North; South; City of Santiago.
Откройте файл app.R
и дозаполните код для ui
, считая, что:
fluidRow
должно находится выпадающее меню selectInput
с id, равным "index"
, текстом "Column to visualise:"
и значениями из our_choices
;fluidRow
должно находится поле для ввода текста textInput
с id, равным "color"
, текстом "Choose color:"
и текстом-подсказкой в поле "e.g. red or #3131d4"
;fluidRow
должно находится менюradioButtons
с id
, равным "reg"
, текстом "Choose region:"
и значениями из our_regs
.Совмещаем усилия — проверяем написанные части кода для интерфейса и построения графиков!