# Практикум 2: векторы, матрицы, списки ### Задача 1 Создайте матрицу размерности $3 \times 4$, состоящую из 3, а затем измените некоторые её элементы так, чтобы получить следующее: ``` [3 3 4 3] [1 3 3 3] [3 NA 3 1] ``` ### Задача 2 Создайте из векторов `a`, `b`, `c` матрицу, такую, что: * векторы являются столбцами матрицы; * векторы являются строками матрицы. Векторы: ```{r} a <- c(1, 3, 4, 9, NA) b <- c(5, 6, 7, 0, 2) c <- c(9, 10, 13, 1, 20) ``` Дайте новые названия строкам и столбцам матрицы. ### Задача 3 Может ли матрица состоять из элементов разных типов? Проверьте: составьте матрицу из следующих векторов (векторы записаны как столбцы матрицы): ```{r} names <- c("Jane", "Michael", "Mary", "George") ages <- c(8, 6, 28, 45) gender <- c(0, 1, 0, 1) ``` Если получилось не то, что хотелось, подумайте, как это можно исправить, не теряя информации, которая сохранена в векторах. Добавьте в матрицу столбец `age_sq` -- возраст в квадрате. ### Задача 4 Создайте из векторов из задачи 3 список (*list*) и назовите его `info`. * Обращаясь к элементам списка, выведите на экран имя Michael. * Обращаясь к элементам списка, выведите на экран вектор `gender`. * Назовите векторы в списке `Name`, `Age`, `Gender`. Выведите на экран элементы вектора `Name`. * Добавьте в список вектор `drinks`, в котором сохранены значения: juice, tea, rum, coffee. * Добавьте в список данные по еще одному человеку: John, 2 года, мужской пол, любит молоко. ### Задача 5 В R есть функция `strsplit()`, которая позволяет разбивать строки на части по определенным символам (аналог метода `.split()` в Python). Пусть у нас есть строка `s`: ```{r} s <- "a,b,c,d" ``` Мы хотим получить из неё вектор из 6 букв. Применям функцию: ```{r} let <- strsplit(s, ",") ``` Получили почти то, что хотели. Почему почти? Потому что получили не вектор, а список! ```{r} class(let) ## [1] "list" ``` Превратим в вектор: ```{r} unlist(let) ## [1] "a" "b" "c" "d" ``` Теперь всё в порядке, получили вектор из четырех элементов. Теперь задание. Дана строка `index`: ```{r} index <- "0,72;0,38;0,99;0,81;0,15;0,22;0,16;0,4;0,24" ``` Получите из этой строки числовой вектор `I`.