Семинар по теме: датафреймы и виджеты Shiny

Создайте новый файл с приложением Shiny. Запомните, в какой папке лежит файл app.R. Удалите весь код из app.R, скопируйте туда код из незаполненного шаблона template1.R.

Backend

  1. Скачайте файл Chile.csv и поместите его в рабочую папку RStudio. Загрузите файл в R и сохраните данные в датафрейм dat. Пользоваться функцией file.choose() нельзя!

  2. Удалите строки с пропущенными значениями в датафрейме dat и сохраните изменения.

  3. Известно, что в списке input в переменной index сохранена строка (тип character) с номером столбца в датафрейме dat, который нас интересует. Напишите код, который сохраняет в переменную x интересующий нас столбец.

  4. Известно, что в списке input в переменной color сохранена строка с названием цвета. Напишите код, который делает следующее: если эта строка пустая (не содержит символов), то в переменную gcolor сохраняется значение "grey", иначе — значение color из вектора input.

  5. Известно, что в переменной x сохранен вектор. Напишите код, который делает следующее: если вектор x имеет тип numeric, для вектора x строится гистограмма с цветом заливки gcolor из предыдущего пункта, если вектор x имеет другой тип, для вектора x строится столбиковая диаграмма с цветом заливки gcolor.

  6. Известно, что в списке input в переменной reg сохранено название интересующего нас региона или строка “All”, если нас интересуют все регионы. Напишите код, который делает следующее: если это название не “All”, а конкретный регион, то отфильтровывает строки, соответствующие этому региону, из датафрейма dat и сохраняет их в dat.

  7. Откройте файл app.R и дозаполните код для функции server(), добавляя написанные кусочки кода внутрь renderPlot().

Frontend

  1. Скачайте файл Chile.csv и поместите его в рабочую папку RStudio. Загрузите файл в R и сохраните данные в датафрейм dat. Пользоваться функцией file.choose() нельзя!

  2. Удалите строки с пропущенными значениями в датафрейме dat и сохраните изменения.

  3. Посмотрите на пример поименованного вектора в 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, а значениями — их названия.

  1. Создайте поименованный вектор our_regs, где ключами являются уникальные значения из столбца region из dat (приведите их к типу character), а значениями — полные названия регионов: Central; Metropolitan Santiago area; North; South; City of Santiago.

  2. Откройте файл 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.
  1. Приведите графики в порядок: добавьте заголовки, подписи к осям.

Итог

Совмещаем усилия — проверяем написанные части кода для интерфейса и построения графиков!