+ - 0:00:00
Notes for current slide
Notes for next slide

Язык R и его применение в биоинформатике

Анастасия Жарикова

03.09.2021

1

Преподаватели

  • Жарикова Анастасия Александровна - azharikova89@gmail.com

  • Пензар Дмитрий Дмитриевич - dmitrypenzar1996@gmail.com

  • Валяева Анна Александровна - valyaeva.ann@gmail.com

Где нас найти

  • Ходите на занятия

  • Чат ТГ "ФББ набор 2019, Алгоритмы и R"

  • Комната 633, корпус Б

2

Правила игры

  • Занятия очные
  • Ходить можно только со своей группой (или поменяться)
  • Презентации, домашние задания, дедлайны, ведомость и прочие материалы - на странице курса на kodomo
  • Структура:
    • 16 занятий
    • 10 квизов
    • 12 домашних заданий
    • 2 контрольные работы
    • защита проекта
  • В курсе будут задачи и вопросы, касающиеся других предметов (например, статистика, молекулярная биология). Считается, что все предметы из прошлых семестров вы усвоили
  • Сохраняйте коды домашних заданий, контрольных работ, квизов, проекта до получения зачета
  • Задавайте вопросы: на занятии, после занятия, письмами на почту, в телеграмм (групповой чат или в личных сообщениях)
3

Правила игры

  • Квизы - короткие задания на 10-15 минут в начале занятия, обязательно прилагать код
  • Квизы и контрольные работы не переписываются
  • В случае пропуска по уважительной причине (справка в учебной части, поездка на конференцию) баллы пересчитываем
  • Домашние задания являются обязательными
  • На выполнение домашнего задания отводится не менее 14 дней
  • После дедлайна домашние задания не принимаются ни в каком виде
  • Если не ясна формулировка - спрашивайте!
  • Сдавать домашние задания можно 1 раз только в виде отчета .pdf или .html с демонстрацией кода, загружая отчет в соответствующую форму
  • Домашние задания нужно присылать на почту преподавателя
4

Правила игры

  • Задание №0 в каждом домашнем задании - проработать самостоятельно материалы лекции!
  • При написании кода необходимо использовать полученные знания. При сдаче работающего, но плохого или заведомо неоптимального кода - штраф до 30% от веса задачи
  • При решении задания, требующего ответа, ответ должен быть сформулирован в явном виде. В противном случае задание не засчитывается
  • Если в задании требуется прислать файл, то называть его следует по принципу: FBB_R_HW2_Petrov.R (.html,.pdf,...)
  • Для защиты проекта можно использовать свои данные (предварительно показать преподавателю) или запросить датасет. Утвердить датасеты для проекта необходимо не позднее 3 декабря
5

Почему R?

  • Бесплатный
  • Форумы, поддержка, развитие
  • Быстрая и удобная статистическая обработка данных
  • Построение красивых графиков
  • Множество дополнительных пакетов
  • Обработка данных RNA-seq
  • Создание отчетов
  • Некоторые лаборатории используют только R
  • Еще один инструмент в вашем арсенале
6

Что будет

7

R и RStudio - Демонстрация

Где работать?

8

R - рекомендации к работе

  • Можно запускать без RStudio
  • Можно запускать из командной строки
  • RStudio - настоятельно рекомендуется (особенно на контрольных работах!)
  • Организуйте свою работу:
    • Проект
    • Скрипты file.R
    • Отчеты file.Rmd
  • Сохраняйте свой код в виде скриптов file.R (на контрольных работах - это обязательное требование) или file.Rmd
  • Сохраняйте полученные таблицы и графики в отдельные файлы
  • Использовать Google можно и нужно!
9

Markdown

В RStudio: File -> New File -> R Markdown -> пример документа

Запускается целиком, сразу видны ошибки и проблемы

Фрагменты кода записывают в “chunk”:

Переменные и функции, инициализированные в одном chunk, будут работать во всем документе

10

Markdown

11

Markdown

В случае ошибки в коде итоговый документ не будет создан, появится сообщение об ошибке

Читаем ошибку - исправляем - перезапускаем

12

Markdown

https://rmarkdown.rstudio.com/index.html

https://www.rstudio.com/wp-content/uploads/2015/03/rmarkdown-reference.pdf

Домашние задания:

  • делаем в markdown (file.Rmd)
  • сохраняем в file.html (или file.pdf)
  • высылаем на почту преподавателя или прикрепляем в форму
13

Оформление домашнего задания

Должно быть ясно:

  • кто вы
  • номер домашнего задания
  • номер и формулировка задания
  • код
  • результат выполнения кода
  • ответ, если нужно
14

Оформление домашнего задания

15

Полезные команды

getwd() # узнать рабочую директорию

setwd(‘Newdir’) # задать рабочую директорию

dir() # список файлов в рабочей директории

ls() # список переменных в рабочей дирректории

sessionInfo() # информация о загруженной сессии R

16

Основной тип данных - вектор

x <- 1:5
x
[1] 1 2 3 4 5
16

Основной тип данных - вектор

x <- 1:5
x
y <- 6:10
y
[1] 1 2 3 4 5
[1] 6 7 8 9 10
16

Основной тип данных - вектор

x <- 1:5
x
y <- 6:10
y
length(x)
[1] 1 2 3 4 5
[1] 6 7 8 9 10
[1] 5

Что такое [1]?

vec <- 100:120
vec
[1] 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118
[20] 119 120
16

Операции с векторами

x <- 1:5
x
[1] 1 2 3 4 5
16

Операции с векторами

x <- 1:5
x
y <- 6:10
y
[1] 1 2 3 4 5
[1] 6 7 8 9 10
16

Операции с векторами

x <- 1:5
x
y <- 6:10
y
x + y
[1] 1 2 3 4 5
[1] 6 7 8 9 10
[1] 7 9 11 13 15
16

Операции с векторами

x <- 1:5
x
y <- 6:10
y
x + y
x^2
[1] 1 2 3 4 5
[1] 6 7 8 9 10
[1] 7 9 11 13 15
[1] 1 4 9 16 25
16

Операции с векторами

x <- 1:5
x
y <- 6:10
y
x + y
x^2
x+3
[1] 1 2 3 4 5
[1] 6 7 8 9 10
[1] 7 9 11 13 15
[1] 1 4 9 16 25
[1] 4 5 6 7 8
16

Операции с векторами

x <- 1:5
x
y <- 6:10
y
x + y
x^2
x+3
-x
[1] 1 2 3 4 5
[1] 6 7 8 9 10
[1] 7 9 11 13 15
[1] 1 4 9 16 25
[1] 4 5 6 7 8
[1] -1 -2 -3 -4 -5
16

Операции с векторами

x <- 1:5
x
y <- 6:10
y
x + y
x^2
x+3
-x
x > 4
[1] 1 2 3 4 5
[1] 6 7 8 9 10
[1] 7 9 11 13 15
[1] 1 4 9 16 25
[1] 4 5 6 7 8
[1] -1 -2 -3 -4 -5
[1] FALSE FALSE FALSE FALSE TRUE
16

Операции с векторами

x <- 1:5
x
y <- 6:10
y
x + y
x^2
x+3
-x
x > 4
x == 4
[1] 1 2 3 4 5
[1] 6 7 8 9 10
[1] 7 9 11 13 15
[1] 1 4 9 16 25
[1] 4 5 6 7 8
[1] -1 -2 -3 -4 -5
[1] FALSE FALSE FALSE FALSE TRUE
[1] FALSE FALSE FALSE TRUE FALSE
16

Операции с векторами

x <- 1:5
x
y <- 6:10
y
x + y
x^2
x+3
-x
x > 4
x == 4
x = 4
[1] 1 2 3 4 5
[1] 6 7 8 9 10
[1] 7 9 11 13 15
[1] 1 4 9 16 25
[1] 4 5 6 7 8
[1] -1 -2 -3 -4 -5
[1] FALSE FALSE FALSE FALSE TRUE
[1] FALSE FALSE FALSE TRUE FALSE
16

Операции с векторами

x <- 1:5
x
y <- 6:10
y
x + y
x^2
x+3
-x
x > 4
x == 4
x = 4
x
[1] 1 2 3 4 5
[1] 6 7 8 9 10
[1] 7 9 11 13 15
[1] 1 4 9 16 25
[1] 4 5 6 7 8
[1] -1 -2 -3 -4 -5
[1] FALSE FALSE FALSE FALSE TRUE
[1] FALSE FALSE FALSE TRUE FALSE
[1] 4
16

Операции с векторами

x <- 1:5
x
[1] 1 2 3 4 5
y <- 1:2
y
[1] 1 2
x+y
Warning in x + y: longer object length is not a multiple of shorter object
length
[1] 2 4 4 6 6
17

Способы создания вектора

Оператор с()

c(1,2,3)
[1] 1 2 3

Объединение

x <- 1:3
x
[1] 1 2 3
x <- c(x,5:7)
x
[1] 1 2 3 5 6 7
18

Способы создания вектора

Последовательности

1:10
[1] 1 2 3 4 5 6 7 8 9 10
seq(from=1,to=8,by=2)
[1] 1 3 5 7

Повторы

rep(1:3,times=3)
[1] 1 2 3 1 2 3 1 2 3
19

Способы создания вектора

Взять 10 случайных чисел от 1 до 30

sample(1:30,10,replace=T)
[1] 13 12 7 23 30 29 24 16 13 5
20

Способы создания вектора

Нужно сгенерировать заданное количество чисел из известного распределения

  • rnorm(n,mean,sd) - нормальное распределение
  • runif(n,min,max) - равномерное распределение
  • rbinom(n,size,prob) - биномиальное распределение
  • rpois(n,lambda) - распределение Пуассона
set.seed(123)
rpois(20,10)
[1] 8 9 14 10 10 15 11 5 4 13 11 11 10 8 15 11 3 7 6 8
21

Описательная статистика

set.seed(123)
a <- rpois(20,10)
sum(a)
[1] 189
sd(a)
[1] 3.410124
max(a)
[1] 15
mean(a)
[1] 9.45
22

Вектор - данные одного типа

x <- c(T,F,F,T)
typeof(x)
[1] "logical"
22

Вектор - данные одного типа

x <- c(T,F,F,T)
typeof(x)
x <- c(0.5, 1.2, 3.6)
typeof(x)
[1] "logical"
[1] "double"
22

Вектор - данные одного типа

x <- c(T,F,F,T)
typeof(x)
x <- c(0.5, 1.2, 3.6)
typeof(x)
x <- 1:5
typeof(x)
[1] "logical"
[1] "double"
[1] "integer"
22

Вектор - данные одного типа

x <- c(T,F,F,T)
typeof(x)
x <- c(0.5, 1.2, 3.6)
typeof(x)
x <- 1:5
typeof(x)
x <- c('a','b','c')
typeof(x)
[1] "logical"
[1] "double"
[1] "integer"
[1] "character"
22

Вектор - данные одного типа

x <- c(T,F,F,T)
typeof(x)
x <- c(0.5, 1.2, 3.6)
typeof(x)
x <- 1:5
typeof(x)
x <- c('a','b','c')
typeof(x)
x <- c(F,1,2,T)
typeof(x)
[1] "logical"
[1] "double"
[1] "integer"
[1] "character"
[1] "double"
22

Вектор - данные одного типа

x <- c(T,F,F,T)
typeof(x)
x <- c(0.5, 1.2, 3.6)
typeof(x)
x <- 1:5
typeof(x)
x <- c('a','b','c')
typeof(x)
x <- c(F,1,2,T)
typeof(x)
x
[1] "logical"
[1] "double"
[1] "integer"
[1] "character"
[1] "double"
[1] 0 1 2 1
22

Вектор - данные одного типа

x <- c(T,F,F,T)
typeof(x)
x <- c(0.5, 1.2, 3.6)
typeof(x)
x <- 1:5
typeof(x)
x <- c('a','b','c')
typeof(x)
x <- c(F,1,2,T)
typeof(x)
x
x <- c(1,2.8)
typeof(x)
[1] "logical"
[1] "double"
[1] "integer"
[1] "character"
[1] "double"
[1] 0 1 2 1
[1] "double"
22

Вектор - данные одного типа

x <- c(T,F,F,T)
typeof(x)
x <- c(0.5, 1.2, 3.6)
typeof(x)
x <- 1:5
typeof(x)
x <- c('a','b','c')
typeof(x)
x <- c(F,1,2,T)
typeof(x)
x
x <- c(1,2.8)
typeof(x)
x
[1] "logical"
[1] "double"
[1] "integer"
[1] "character"
[1] "double"
[1] 0 1 2 1
[1] "double"
[1] 1.0 2.8
22

Вектор - данные одного типа

x <- c(T,F,F,T)
typeof(x)
x <- c(0.5, 1.2, 3.6)
typeof(x)
x <- 1:5
typeof(x)
x <- c('a','b','c')
typeof(x)
x <- c(F,1,2,T)
typeof(x)
x
x <- c(1,2.8)
typeof(x)
x
x <- c(1,'a',F,5.5)
typeof(x)
[1] "logical"
[1] "double"
[1] "integer"
[1] "character"
[1] "double"
[1] 0 1 2 1
[1] "double"
[1] 1.0 2.8
[1] "character"
22

Вектор - данные одного типа

x <- c(T,F,F,T)
typeof(x)
x <- c(0.5, 1.2, 3.6)
typeof(x)
x <- 1:5
typeof(x)
x <- c('a','b','c')
typeof(x)
x <- c(F,1,2,T)
typeof(x)
x
x <- c(1,2.8)
typeof(x)
x
x <- c(1,'a',F,5.5)
typeof(x)
x
[1] "logical"
[1] "double"
[1] "integer"
[1] "character"
[1] "double"
[1] 0 1 2 1
[1] "double"
[1] 1.0 2.8
[1] "character"
[1] "1" "a" "FALSE" "5.5"
22

Срезы: по индексам

x <- c(5,16,8,32,56,2)
x
[1] 5 16 8 32 56 2
22

Срезы: по индексам

x <- c(5,16,8,32,56,2)
x
x[1]
[1] 5 16 8 32 56 2
[1] 5
22

Срезы: по индексам

x <- c(5,16,8,32,56,2)
x
x[1]
x[2:4]
[1] 5 16 8 32 56 2
[1] 5
[1] 16 8 32
22

Срезы: по индексам

x <- c(5,16,8,32,56,2)
x
x[1]
x[2:4]
x[c(2,5)]
[1] 5 16 8 32 56 2
[1] 5
[1] 16 8 32
[1] 16 56
22

Срезы: по индексам

x <- c(5,16,8,32,56,2)
x
x[1]
x[2:4]
x[c(2,5)]
x[-1]
[1] 5 16 8 32 56 2
[1] 5
[1] 16 8 32
[1] 16 56
[1] 16 8 32 56 2
22

Срезы: по индексам

x <- c(5,16,8,32,56,2)
x
x[1]
x[2:4]
x[c(2,5)]
x[-1]
x > 10
[1] 5 16 8 32 56 2
[1] 5
[1] 16 8 32
[1] 16 56
[1] 16 8 32 56 2
[1] FALSE TRUE FALSE TRUE TRUE FALSE
22

Срезы: по индексам

x <- c(5,16,8,32,56,2)
x
x[1]
x[2:4]
x[c(2,5)]
x[-1]
x > 10
x[x > 10]
[1] 5 16 8 32 56 2
[1] 5
[1] 16 8 32
[1] 16 56
[1] 16 8 32 56 2
[1] FALSE TRUE FALSE TRUE TRUE FALSE
[1] 16 32 56
22

Срезы: по индексам

x <- c(5,16,8,32,56,2)
x
x[1]
x[2:4]
x[c(2,5)]
x[-1]
x > 10
x[x > 10]
x[x >= 5 & x < 10]
[1] 5 16 8 32 56 2
[1] 5
[1] 16 8 32
[1] 16 56
[1] 16 8 32 56 2
[1] FALSE TRUE FALSE TRUE TRUE FALSE
[1] 16 32 56
[1] 5 8
22

Справки и помощь

x <- c(5,16,8,32,56,2)
typeof(x)
[1] "double"
22

Справки и помощь

x <- c(5,16,8,32,56,2)
typeof(x)
is.vector(x)
[1] "double"
[1] TRUE
22

Справки и помощь

x <- c(5,16,8,32,56,2)
typeof(x)
is.vector(x)
is.logical(x)
[1] "double"
[1] TRUE
[1] FALSE
22

Справки и помощь

x <- c(5,16,8,32,56,2)
typeof(x)
is.vector(x)
is.logical(x)
is.integer(x)
[1] "double"
[1] TRUE
[1] FALSE
[1] FALSE
  • ?seq
  • help(seq)
  • example(seq)
22

Data frame

a <- c(5,4,8)
b <- c('a','b','c')
h <- c(T,F,T)
g <- c(1.5,2.5,3.7)
22

Data frame

a <- c(5,4,8)
b <- c('a','b','c')
h <- c(T,F,T)
g <- c(1.5,2.5,3.7)
df <- data.frame(a,b,h)
22

Data frame

a <- c(5,4,8)
b <- c('a','b','c')
h <- c(T,F,T)
g <- c(1.5,2.5,3.7)
df <- data.frame(a,b,h)
df
a b h
1 5 a TRUE
2 4 b FALSE
3 8 c TRUE
22

Data frame

a <- c(5,4,8)
b <- c('a','b','c')
h <- c(T,F,T)
g <- c(1.5,2.5,3.7)
df <- data.frame(a,b,h)
df
df <- data.frame(a = c(5,4,8),
b = c('a','b','c'),
h = c(T,F,T),
g = c(1.5,2.5,3.7))
df
a b h
1 5 a TRUE
2 4 b FALSE
3 8 c TRUE
a b h g
1 5 a TRUE 1.5
2 4 b FALSE 2.5
3 8 c TRUE 3.7
22

Data frame

a <- c(5,4,8)
b <- c('a','b','c')
h <- c(T,F,T)
g <- c(1.5,2.5,3.7)
df <- data.frame(a,b,h)
df
df <- data.frame(a = c(5,4,8),
b = c('a','b','c'),
h = c(T,F,T),
g = c(1.5,2.5,3.7))
df
str(df)
a b h
1 5 a TRUE
2 4 b FALSE
3 8 c TRUE
a b h g
1 5 a TRUE 1.5
2 4 b FALSE 2.5
3 8 c TRUE 3.7
'data.frame': 3 obs. of 4 variables:
$ a: num 5 4 8
$ b: Factor w/ 3 levels "a","b","c": 1 2 3
$ h: logi TRUE FALSE TRUE
$ g: num 1.5 2.5 3.7
22

Data frame

a <- c(5,4,8)
b <- c('a','b','c')
h <- c(T,F,T)
g <- c(1.5,2.5,3.7)
df <- data.frame(a,b,h)
df
df <- data.frame(a = c(5,4,8),
b = c('a','b','c'),
h = c(T,F,T),
g = c(1.5,2.5,3.7))
df
str(df)
dim(df)
a b h
1 5 a TRUE
2 4 b FALSE
3 8 c TRUE
a b h g
1 5 a TRUE 1.5
2 4 b FALSE 2.5
3 8 c TRUE 3.7
'data.frame': 3 obs. of 4 variables:
$ a: num 5 4 8
$ b: Factor w/ 3 levels "a","b","c": 1 2 3
$ h: logi TRUE FALSE TRUE
$ g: num 1.5 2.5 3.7
[1] 3 4
22

Data frame

a <- c(5,4,8)
b <- c('a','b','c')
h <- c(T,F,T)
g <- c(1.5,2.5,3.7)
df <- data.frame(a,b,h)
df
df <- data.frame(a = c(5,4,8),
b = c('a','b','c'),
h = c(T,F,T),
g = c(1.5,2.5,3.7))
df
str(df)
dim(df)
colnames(df)
a b h
1 5 a TRUE
2 4 b FALSE
3 8 c TRUE
a b h g
1 5 a TRUE 1.5
2 4 b FALSE 2.5
3 8 c TRUE 3.7
'data.frame': 3 obs. of 4 variables:
$ a: num 5 4 8
$ b: Factor w/ 3 levels "a","b","c": 1 2 3
$ h: logi TRUE FALSE TRUE
$ g: num 1.5 2.5 3.7
[1] 3 4
[1] "a" "b" "h" "g"
22

Data frame

a <- c(5,4,8)
b <- c('a','b','c')
h <- c(T,F,T)
g <- c(1.5,2.5,3.7)
df <- data.frame(a,b,h)
df
df <- data.frame(a = c(5,4,8),
b = c('a','b','c'),
h = c(T,F,T),
g = c(1.5,2.5,3.7))
df
str(df)
dim(df)
colnames(df)
rownames(df)
a b h
1 5 a TRUE
2 4 b FALSE
3 8 c TRUE
a b h g
1 5 a TRUE 1.5
2 4 b FALSE 2.5
3 8 c TRUE 3.7
'data.frame': 3 obs. of 4 variables:
$ a: num 5 4 8
$ b: Factor w/ 3 levels "a","b","c": 1 2 3
$ h: logi TRUE FALSE TRUE
$ g: num 1.5 2.5 3.7
[1] 3 4
[1] "a" "b" "h" "g"
[1] "1" "2" "3"
22

Data frame

a <- c(5,4,8)
b <- c('a','b','c')
h <- c(T,F,T)
g <- c(1.5,2.5,3.7)
df <- data.frame(a,b,h)
df
df <- data.frame(a = c(5,4,8),
b = c('a','b','c'),
h = c(T,F,T),
g = c(1.5,2.5,3.7))
df
str(df)
dim(df)
colnames(df)
rownames(df)
head(df)
a b h
1 5 a TRUE
2 4 b FALSE
3 8 c TRUE
a b h g
1 5 a TRUE 1.5
2 4 b FALSE 2.5
3 8 c TRUE 3.7
'data.frame': 3 obs. of 4 variables:
$ a: num 5 4 8
$ b: Factor w/ 3 levels "a","b","c": 1 2 3
$ h: logi TRUE FALSE TRUE
$ g: num 1.5 2.5 3.7
[1] 3 4
[1] "a" "b" "h" "g"
[1] "1" "2" "3"
a b h g
1 5 a TRUE 1.5
2 4 b FALSE 2.5
3 8 c TRUE 3.7

Сколько строк? Сколько столбцов?

22

Встроенные наборы данных

data()

?mtcars

23

mtcars

head(mtcars,4)
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
str(mtcars)
'data.frame': 32 obs. of 11 variables:
$ mpg : num 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
$ cyl : num 6 6 4 6 8 6 8 4 4 6 ...
$ disp: num 160 160 108 258 360 ...
$ hp : num 110 110 93 110 175 105 245 62 95 123 ...
$ drat: num 3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
$ wt : num 2.62 2.88 2.32 3.21 3.44 ...
$ qsec: num 16.5 17 18.6 19.4 17 ...
$ vs : num 0 0 1 1 0 1 0 1 1 1 ...
$ am : num 1 1 1 0 0 0 0 0 0 0 ...
$ gear: num 4 4 4 3 3 3 3 4 4 4 ...
$ carb: num 4 4 1 1 2 1 4 2 2 4 ...
24

mtcars

colnames(mtcars)
[1] "mpg" "cyl" "disp" "hp" "drat" "wt" "qsec" "vs" "am" "gear"
[11] "carb"
table(mtcars$cyl)
4 6 8
11 7 14
25

Data frame - Срезы

dim(mtcars)
[1] 32 11
head(mtcars,4)
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
mtcars[3,6]
[1] 2.32
26

Data frame - Срезы

mtcars[8,]
mpg cyl disp hp drat wt qsec vs am gear carb
Merc 240D 24.4 4 146.7 62 3.69 3.19 20 1 0 4 2
mtcars[1:3,]
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
mtcars['Mazda RX4',c('mpg','cyl')]
mpg cyl
Mazda RX4 21 6
27

Data frame - Выбор данных по условию

mtcars[mtcars$cyl > 4 & mtcars$cyl < 8,]
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4
Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1
Valiant 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1
Merc 280 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4
Merc 280C 17.8 6 167.6 123 3.92 3.440 18.90 1 0 4 4
Ferrari Dino 19.7 6 145.0 175 3.62 2.770 15.50 0 1 5 6
28

Data frame - Выбор данных по условию

table(mtcars$cyl)
4 6 8
11 7 14
28

Data frame - Выбор данных по условию

table(mtcars$cyl)
vec <- c(4,8)
vec
4 6 8
11 7 14
[1] 4 8
28

Data frame - Выбор данных по условию

table(mtcars$cyl)
vec <- c(4,8)
vec
mt <- mtcars[mtcars$cyl %in% vec,]
table(mt$cyl)
4 6 8
11 7 14
[1] 4 8
4 8
11 14
28

Data frame - Выбор данных по условию

table(mtcars$cyl)
vec <- c(4,8)
vec
mt <- mtcars[mtcars$cyl %in% vec,]
table(mt$cyl)
mt <- mtcars[!(mtcars$cyl %in% vec),]
table(mt$cyl)
4 6 8
11 7 14
[1] 4 8
4 8
11 14
6
7
28

Преподаватели

  • Жарикова Анастасия Александровна - azharikova89@gmail.com

  • Пензар Дмитрий Дмитриевич - dmitrypenzar1996@gmail.com

  • Валяева Анна Александровна - valyaeva.ann@gmail.com

Где нас найти

  • Ходите на занятия

  • Чат ТГ "ФББ набор 2019, Алгоритмы и R"

  • Комната 633, корпус Б

2
Paused

Help

Keyboard shortcuts

, , Pg Up, k Go to previous slide
, , Pg Dn, Space, j Go to next slide
Home Go to first slide
End Go to last slide
Number + Return Go to specific slide
b / m / f Toggle blackout / mirrored / fullscreen mode
c Clone slideshow
p Toggle presenter mode
t Restart the presentation timer
?, h Toggle this help
Esc Back to slideshow