[1] 1 5 8
[1] 2 6 9
и его применение в биоинформатике
Лекция 1
Анастасия Жарикова
1 сентября 2023
Жарикова Анастасия Александровна
azharikova89@gmail.com
Валяева Анна Александровна
valyaeva.ann@gmail.com
Ходите на занятия
Общий чат ТГ
Комната 633, корпус Б
Задавать вопросы(!!!!)
на занятиях
лично очно
общий чат ТГ
личные сообщения
Ночью и по выходным мы не работаем!
За сутки до любого дедлайна - день тишины!
Если вы не задаете вопросы, значит вы все поняли, и мы можем спрашивать материал в полном объеме, задавать больше домашних заданий и усложнять самостоятельные и контрольные работы
17 занятий
14 лекций
13 ДЗ
11 самостоятельных работ
2 контрольных работы
Защита проекта
Все материалы будут выложены на странице курса
Занятия очные по пятницам
Группа 301, 10:55-12:30, аудитория 442
Группа 302, 17:20-18:55, аудитория 207
Контрольные работы ~ 27 октября и 24 ноября
Защита проектов ~ 22 декабря
Ходить можно только со своей группой (или поменяться)
Не ходить без потери баллов можно по уважительным причинам (справка в учебной части, поездка на конференцию)
За домашние, самостоятельные и контрольные работы начисляют первичные баллы (ПБ)
Первичные баллы пересчитывают во вторичные быллы (ВБ) с учетом веса активности
За проект сразу начисляют ВБ
Максимум за курс можно получить 100 ВБ
Преподаватели могут начислять (и отнимать!) дополнительные баллы за особые достижения
Домашние задания - 20 ВБ
Самостоятельные работы - 20 ВБ
Контрольные работы - 30 ВБ
Защита проектов - 30 ВБ
Домашние задания можно сдавать только 1 раз
В большинстве случаев на выполнение домашнего задания дается 2 недели
Дедлайны по воскресеньям (почти всегда)
Мы можем ИНОГДА двигать дедлайны по запросу студентов
Самостоятельные и контрольные работы не переписываются
На первом занятии познакомимся с языком R, средой разработки RStudio, основными концепциями
На дом вы получите материалы для самостоятельного изучения и домашнее задание
На следующем занятии пишем самостоятельную работу по материалам, выданным ранее для самостоятельного изучения
На занятии обсуждаем только самые важные и сложные аспекты темы
На занятии разбираем примеры повышенной сложности
На дом вы получаете материалы для самостоятельного изучения и домашнее задание
и т.д. …
Слайды с 🏠
Список функций для изучения
Отдельная презентация
Список внешних источников
Максимально участвовать в активностях
Набрать как минимум 5 ВБ от каждой активности
Набрать в итоге более 60 ВБ
Окончательное количество проходных для зачета баллов будет установлено ПОСЛЕ защиты проектов
Допускаем недобор 1 балла, не больше
Грубые ошибки при защите проекта могут обнулить все ваши старания…
В курсе будут задачи и вопросы, касающиеся других предметов (например, статистика, молекулярная биология).
Считается, что все предметы из прошлых семестров (и из школы) вы усвоили.
Мы не повторяем статистику, но спрашиваем!
Непонимание материала прошлых семестров считается грубыми ошибками при защите проекта
Нужно набрать недостающее количество баллов
Подготовить к пересдаче необходимое количество индивидуальных проектов
Ответить на теоретические вопросы:
по R
по статистике
по материалу проекта
Допускаем недобор 1 балла, не больше
Набор разных инструментов и навыков делает специалиста по анализу данных более разносторонним и гибким
Интеграция в существующие проекты
Язык R распространяется бесплатно с открытым исходным кодом
Доступно для Linux, macOS, Windows
Интерпретируемый язык программирования
Обширное сообщество разработчиков
Интегрированная среда разработки (одна из)
На свой ноутбук необходимо установить:
сначала язык R
затем RStudio
В следующий раз будет самостоятельная работа в RStudio!!!
Нужны ноутбуки!
оптимально организовать пространство для работы
создавать и отлаживать программные сценарии
удобно просматривать результаты работы
получать справочную информацию
работа с данными практически в любых форматах (импорт/экспорт)
Устройство RStudio
Организация проектов
Создание файлов (.R, .Rmd)
Получение справочной информации
Первый шаг к воспроизводимости
Можно вводить команды по одной в консоль и выполнять их
Все действия будут отражены в вкладке History
Как понять, какие команды нам подошли, а какие выдали ошибку или неудовлетворительный результат?
Лучше сохранять только корректно работающие строки кода в нужной последовательности в файл
Нужно добавлять комментарии
Вы никогда не забудете, что и как вы делали
Получившийся файл всегда можно просмотреть и перезапустить, в том числе с другими параметрами и входными данными
Сохраняйте коды домашних заданий, контрольных и самостоятельных работ, проекта до получения зачета
File -> New File -> R Script
Код + комментарии
Можно использовать в RStudio или запускать из коммандной строки
Ctrl + enter - запуск строки кода или выделенного фрагмента кода
“Горячие” клавиши
Создание отчета
Можно добавлять
форматированный текст
формулы
таблицы
код
результат выполнения кода
картинки
ссылки
Создание
Способ раз:
File -> New File -> Markdown File -> создать “шапку” -> написать что-то осмысленное -> сохранить -> Knit -> .html/.pdf/.doc
Способ два:
File -> New File -> R Markdown -> шаблон файла с “шапкой” -> удалить лишнее и добавить нужное -> сохранить -> Knit -> .html/.pdf/.doc
Текстовый язык разметки
Позволяет объединять в одном отчете:
код
результат анализа данных (таблицы, рисунки, …)
комментарии
Блок кода записывают в чанки (“chunk”):
Запускается целиком или по чанкам, сразу видны ошибки и проблемы
Переменные и функции, инициализированные в одном chunk, будут работать во всей сессии
Устанавливаем TRUE или FALSE
{r echo = T}
echo
- демонстрация кода
eval
- выполнение кода
message
и warnings
- демонстрация предупреждений
В случае ошибки в коде итоговый документ не будет создан, появится сообщение об ошибке
Читаем ошибку - исправляем - перезапускаем
Называйте файлы согласно шаблону:
R2023_FBB_IvanovI_HW1.R
Указываем СВОЮ фамилию!!!
Обязательно должны быть файлы:
R2023_FBB_IvanovI_HW1.Rmd
R2023_FBB_IvanovI_HW1.html/.pdf
Внимательно читайте задание
Могут быть запрошены файлы другого типа
Внутри файла с решением обязательно должно быть:
Название задания (Пр.: “ФББ - R - Домашнее задание №1”)
Имя и фамилия автора
Номер задания
Формулировка задания
Код, с помощью которого решено задание
Демонстрация корректности каждого шага решения задания
Комментарии (лучше, чтобы они были)
Используйте заголовки разного уровня, выделение текста (цветом, размером, толщиной, …)
Домашнее задание должно быть проверяемо без обращения к внешним источникам и без выполнения кода преподавателем
По желанию добавляйте:
картинки
таблицы
ваши любые рассуждения и комментарии
ссылки
дополнительные решения
вопросы
…
Хорошо:
Задание: прочитайте таблицу, отберите из нее 1000 строк
Как продемонстрировать корректность вашего решения?
неопознанные файлы: фамилия, номер и тип задания должны быть в названии файла И в “шапке” документа
неполное содержание файла:
нет номера домашнего задания
нет формулировок и номеров заданий
нет демонстрации решения (!!!)
…
решения, присланные после дедлайнов
за оформление: нет структуры файла (заголовки)
некорректная демонстрация решения
неверное или неполное решение
неоптимальное решение
Проверяйте, что итоговый файл сгенерился правильно и его можно прочитать
При обнаружении списывания задание обнуляется всем участникам, не разбираясь
Начисляются дополнительные штрафы
Самостоятельные работы - короткие задания на пройденные темы, включая материал для самостоятельного изучения
Проект:
нужно поделиться на группы по 4 человека
каждой группе будет выдан набор данных
необходимо проанализировать данные и представить в виде презентации
защита проекта проходит в виде доклада на последнем занятии в семестре
getwd() # узнать рабочую директорию
setwd("path/to/Newdir") # задать рабочую директорию
dir() # список файлов в рабочей директории
dir.create("New_dir") # создать директорию New_dir
dir.exists("Dir") # проверить, существует ли директория Dir
unlink("Dir", recursive = T) # удалить директорию Dir
file.exists("file.txt") # проверить, существует ли файл file.txt
file.remove("file.txt") # удалить файл file.txt
sessionInfo() # информация о загруженной сессии R
Знать версии программ и пакетов необходимо для возможности воспроизведения результатов
R version 4.2.2 (2022-10-31 ucrt)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 19045)
Matrix products: default
locale:
[1] LC_COLLATE=Russian_Russia.utf8 LC_CTYPE=Russian_Russia.utf8
[3] LC_MONETARY=Russian_Russia.utf8 LC_NUMERIC=C
[5] LC_TIME=Russian_Russia.utf8
attached base packages:
[1] stats graphics grDevices utils datasets methods base
loaded via a namespace (and not attached):
[1] htmlwidgets_1.6.2 compiler_4.2.2 fastmap_1.1.1 cli_3.6.0
[5] tools_4.2.2 htmltools_0.5.6 rstudioapi_0.15.0 yaml_2.3.7
[9] rmarkdown_2.24 knitr_1.43 jsonlite_1.8.7 xfun_0.40
[13] digest_0.6.33 rlang_1.1.1 evaluate_0.21
Основной тип данных
Индексация начинается с 1!!!
При перезаписывании содержимого переменной никаких предупреждений не будет
Индексация элементов в R начинается с 1 (не с 0)
с()
🏠от 1 до 30
Разберем функцию rnorm
В вкладке “Help” можно вызвать справочную информацию о функции
rnorm(n, mean = 0, sd = 1)
У функции есть параметры с значениями по умолчанию
[1] -0.1209513 0.5396450 4.1174166
Где тут вектора?
У каждого элемента вектора есть:
значение
индекс или порядковый номер
имя (может быть пустым)
v1 v2 v3 v4 v5 v6
5 16 8 32 56 2
НЕ должны:
начинаться с цифр
содержать пробелы
содержать специальные символы (+, -, /, , *, ^, …)
содержать зарезервированные слова (if, else, repeat, while, function, for, in, next, break, TRUE, FALSE, NULL, Inf, NaN, NA, …)
Кадры данных или данные табличного вида
data()
?swiss
Fertility Agriculture Examination Education Catholic
Courtelary 80.2 17.0 15 12 9.96
Delemont 83.1 45.1 6 9 84.84
Franches-Mnt 92.5 39.7 5 5 93.40
Moutier 85.8 36.5 12 7 33.77
Infant.Mortality
Courtelary 22.2
Delemont 22.2
Franches-Mnt 20.2
Moutier 20.3
'data.frame': 47 obs. of 6 variables:
$ Fertility : num 80.2 83.1 92.5 85.8 76.9 76.1 83.8 92.4 82.4 82.9 ...
$ Agriculture : num 17 45.1 39.7 36.5 43.5 35.3 70.2 67.8 53.3 45.2 ...
$ Examination : int 15 6 5 12 17 9 16 14 12 16 ...
$ Education : int 12 9 5 7 15 7 7 8 7 13 ...
$ Catholic : num 9.96 84.84 93.4 33.77 5.16 ...
$ Infant.Mortality: num 22.2 22.2 20.2 20.3 20.6 26.6 23.6 24.9 21 24.4 ...
Обращение к столбцу
[1] "Fertility" "Agriculture" "Examination" "Education"
[5] "Catholic" "Infant.Mortality"
Срезы
Срезы
Fertility Agriculture Examination Education Catholic Infant.Mortality
Glane 92.4 67.8 14 8 97.16 24.9
Выбор данных по условию
Fertility Agriculture Examination Education Catholic
Franches-Mnt 92.5 39.7 5 5 93.40
Moutier 85.8 36.5 12 7 33.77
Porrentruy 76.1 35.3 9 7 90.57
Broye 83.8 70.2 16 7 92.85
Gruyere 82.4 53.3 12 7 97.67
Veveyse 87.1 64.5 14 6 98.61
Aubonne 66.9 67.5 14 7 2.27
Cossonay 61.7 69.3 22 5 2.82
Echallens 68.3 72.6 18 2 24.20
Moudon 65.0 55.1 14 3 4.52
Orbe 57.4 54.1 20 6 4.20
Oron 72.5 71.2 12 1 2.40
Paysd'enhaut 72.0 63.5 6 3 2.56
Conthey 75.5 85.9 3 2 99.71
Entremont 69.3 84.9 7 6 99.68
Herens 77.3 89.7 5 2 100.00
Martigwy 70.5 78.2 12 6 98.96
Monthey 79.4 64.9 7 3 98.22
Sierre 92.2 84.6 3 3 99.46
Val de Ruz 77.6 37.6 15 7 4.97
ValdeTravers 67.6 18.7 25 7 8.65
Infant.Mortality
Franches-Mnt 20.2
Moutier 20.3
Porrentruy 26.6
Broye 23.6
Gruyere 21.0
Veveyse 24.5
Aubonne 19.1
Cossonay 18.7
Echallens 21.2
Moudon 22.4
Orbe 15.3
Oron 21.0
Paysd'enhaut 18.0
Conthey 15.1
Entremont 19.8
Herens 18.3
Martigwy 19.4
Monthey 20.2
Sierre 16.3
Val de Ruz 20.0
ValdeTravers 19.5
Выбор данных по условию
1 2 3 5 6 7 8 9 10 11 12 13 15 19 20 28 29 32 53
1 3 4 2 4 7 4 3 2 1 5 3 1 1 1 1 2 1 1
Выбор данных по условию
Fertility Agriculture Examination
Courtelary 80.2 17.0 15
Delemont 83.1 45.1 6
Franches-Mnt 92.5 39.7 5
[1] 2 27
Внешне похожи на таблицу
Вектор с атрибутом dim
Все элементы одного типа
Математические операции работают быстрее
Ozone Solar.R Wind Temp Month Day
1 41 190 7.4 67 5 1
2 36 118 8.0 72 5 2
3 12 149 12.6 74 5 3
4 18 313 11.5 62 5 4
5 NA NA 14.3 56 5 5
6 28 NA 14.9 66 5 6
is.na()
is.nan()
is.null()
Не учитывать отсутствующие данные
Удалить строки с отсутствующими данными
Удаляется ВСЯ строка!
[1] FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE TRUE
Ozone Solar.R Wind Temp Month Day
1 41 190 7.4 67 5 1
2 36 118 8.0 72 5 2
3 12 149 12.6 74 5 3
Можно хранить данные разного типа
Можно хранить данные разного типа
Добавление нового элемента
Срезы