---
title: "Домашнее задание №1"
subtitle: "ФББ - R - 2023"
output: html_document
---

**Дедлайн - 19 сентября 2023 23:59**

![](assets/fish/01_kuzovok_r_hex.png){width=10% fig-align="center"}

***

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

Я так и хотела. 

Теперь давайте разбираться с R. 

Обратите особое внимание на оформление домашнего задания и правила, озвученные на занятии. 

Ориентируйтесь на файл с примером *test.Rmd*

При решении заданий приводите весь код, который вам понадобился для получения ответа

Решение каждого задания должно позволять проверить корректность манипуляций без дополнительных действий со стороны преподавателя. Пример: в задании просят создать вектор; после выполнения соответствующей команды выведите получившейся вектор (или его начало, если вектор длинный) в явном виде, чтобы продемонстрировать результат. Обратите внимание на функции *head()* и *tail()*

НЕ НУЖНО в отчете выводить полностью длинные вектора, матрицы и пр. Это будет штрафоваться

В некоторых заданиях логично было бы вывести сначала объект (или его часть) ДО манипуляций, а затем ПОСЛЕ, чтобы продемонстрировать, что манипуляция совершена и совершена верна

На основании заполненного .Rmd файла создайте .html файл

Присылать заполненные .Rmd тетрадки и .html файл необходимо через [гугл-форму](https://forms.gle/DHMSNKAYLqXMr3pi6)

***

### Задание №1

На занятии (или раньше) вы установили себе R и RStudio. 

Укажите установленные на вашем ноутбуке версии R и RStudio, а так же способ, как вы это узнали. 

Узнайте и укажите, какие версии R и RStudio самые новые на начало сентября 2023. 

***

# Вектора - создание

Потренируемся создавать вектора разными способами.

Здесь и далее код должен содержать только работающие строки и демонстрировать корректность предложенного решения.

### Задание №2

Создайте вектор **х** из чисел 11, 34 и 12.

Какова длина вектора **х**?

### Задание №3

Наиболее оптимальным способом создайте вектор **y** из целых чисел от -1000 до 1000 включительно. 

Какова длина вектора **y**? 

### Задание №4

Создайте вектор **b**, состоящий из векторов **x** (задание №2) и **y** (задание №3).

*Не забудьте убедить меня, что у вас все получилось*

*А еще не забудьте, что мне не нравится долго прокручивать страницу*

### Задание №5

Создайте вектор **x**, состоящий из четных чисел в интервале от 2 до 20.

Не используйте функцию *с()*. 

### Задание №6

Создайте наиболее оптимальным способом вектор **v**: 

22, 23, 24, 25, 26, 22, 23, 24, 25, 26, 22, 23, 24, 25, 26, 22, 23, 24, 25, 26

### Задание №7

Возьмите из распределения Пуассона ($\lambda$ = 3) 10 чисел случайным образом.

Выведите полученный вектор целиком в явном виде.

### Задание №8

Создайте логичесикй вектор **а** длины 5. Сами придумайте последовательность TRUE и(!) FALSE.

Убедитесь, что получившийся вектор **а** действительно логического типа. 

Посчитайте сумму вектора **а** (воспользуйтесь функцией *sum()*).

Кратко поясните, как отработала функция *sum()* на логическом векторе.

### Задание №9

Преобразуйте вектор **а** из задания №8 в численный. 

### Задание №10

С помощью какой операции можно получить ответ: “TRUE” “FALSE” “TRUE”? 

Обратите внимание на все детали записи предложенного ответа

- 1) as.character(as.numeric(as.logical(-1:1)))
- 2) as.character(as.logical(-1:1))
- 3) -1:1
- 4) as.logical(-1:1)
- 5) as.numeric(as.logical(-1:1))
- 6) as.numeric(as.character(as.logical(-1:1)))

***

# Вектора - срезы и манипуляции


### Задание №11

Создайте вектор **n** вида "a", "b", "c" и т.д. Воспользуйтесь набором *letters*. 

Вызовите справку *?letters* и обратите внимание на раздел Usage, это может пригодиться когда-нибудь. 

Длина вектора **n** должна быть аналогична длине вектора **х** из задания №5. 

При создании вектора **n** нельзя указывать длину в виде числа в явном виде. 

Какого типа данные содержит вектор **n**? 

### Задание 12 

Задайте элементам вектора **х** из задания №5 имена в виде вектора из задания №11.

Положите результат в переменную **l**

### Задание 13

Возьмите вектор **х** из задания №5. 

Возьмите только последний элемент вектора **х**, не указывая индекс последнего элемента в явном виде. 

### Задание 14

Возьмите вектор **х** из задания №5. 

Сколько элементов вектора **х** имеют значения строго больше 10?

### Задание 15

Возьмите вектор **х** из задания №5.

Замените первый элемент вектора **х** на любое число. 

### Задание 16

Возьмите вектор **х** из задания №5.

Отберите элементы с нечетными индексами.

### Задание 17

Возьмите вектор **v** из задания №6. 

Выведите индексы элементов вектора **v**, значения которых равны 23. 

Воспользуйтесь функцией *which()*.

### Задание 18

Возьмите вектор **l** из задания №12.

Выведите элемент вектора с: 

- именем "b"

- индексом 3

- значением 18

### Задание 19

Создайте вектор **l** из чисел 24 и 26. 

Возьмите вектор **v** из задания №6. 

Отберите из вектора **v** только такие значения, которые есть в векторе **l**.

Для решения воспользуйтесь оператором *%in%*. 

### Задание 20

Воспользуйтесь вектором **l** из задания №19. 

Есть ли хоть одно положительное значение в векторе **l**? Воспользуйтесь функцией *any()*.

Все ли значения вектора **l** положительные? Воспользуйтесь функцией *all()*.

***

# Таблицы

### Задание 21

Создайте таблицу, заполненную любыми данными на ваше усмотрение, состоящую из двух столбцов и трех строк. 

Воспользуйтесь функцией *data.frame()*. 

### Задание 22

Используйте встроенный набор данных CO2. 

Сколько строк и сколько столбцов в таблице? Выведите в явном виде

### Задание 23

Опишите разнообразие значений столбца Type в наборе данных CO2 (какие значения представлены и в каком количестве). 

Используйте функцию *table()*.

### Задание 24

Отберите из набора данных CO2 такие строки, где значение столбца conc строго больше среднему значению столбца conc. Сколько получилось строк?

### Задание 25

Количество столбцов в таблице можно узнать с помощью функции *ncol()*, аналогично для строк - функция *nrow()*. 

Выберите из набора данных CO2 только 1ый и последний столбцы, не указывая в явном виде индекс последнего столбца. Используйте функцию *ncol()*. Сколько столбцов получилось?

### Задание 26

Отберите из набора данных CО2 такие значения, где столбец Plant принимает значения Qn1, Qn2 и Qn3 Используйте оператор *%in%* 

Сколько получилось строк?

### Задание 27

Воспользуйтесь встроенным набром данных mtcars. 

Выведите имя третьей колонки. 

### Задание 28

Воспользуйтесь встроенным набром данных mtcars. 

Выведите только первый, второй и третий столбцы, а также восьмую и пятую строки.

### Задание 29

Воспользуйтесь встроенным набром данных mtcars.

Выведите строчку таблицы, где содержится информация о машине Camaro Z28. 

Воспользуйтесь функцией *rownames()*.

### Задание 30

Выведите все переменные вашего окружения

Удалите все переменные

***

~~на самостоятельной работе будет задание на создание вектора и отбор некоторых значений из вектора, но я вам ничего не говорила~~