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