Я установил себе R и RStudio. Их версии я узнал с помощью команд в консоли:
R.version
RStudio.Version()
В их выдаче имеется разная информация, в том числе текущие версии R и RStudio:
R version 4.3.1 (2023-06-16 ucrt)
RStudio version 2023.6.2.561
На начало сентября это самые новые версии (см. R Homepage и RStudio Desktop)
Создайте вектор х из чисел 11, 34 и 12.
Какова длина вектора х?
x <- c(11, 34, 12) # создадим нужный вектор
x # посмотрим на него
## [1] 11 34 12
length(x) # определим длину вектора
## [1] 3
Наиболее оптимальным способом создайте вектор y из целых чисел от -1000 до 1000 включительно.
Какова длина вектора y?
y <- -1000 : 1000 # создадим нужный вектор
head(y, 3) # посмотрим на первые 3 ...
## [1] -1000 -999 -998
tail(y, 3) # ... и последние 3 элемента
## [1] 998 999 1000
length(y) # определим длину вектора
## [1] 2001
Создайте вектор b, состоящий из векторов x (задание №2) и y (задание №3).
b <- c(x, y) # создадим нужный вектор
length(b) # проверим, что его длина равна сумме длинн x и y
## [1] 2004
head(b, 5) # и посмотрим, что в начале есть числа из вектора x
## [1] 11 34 12 -1000 -999
Создайте вектор x, состоящий из четных чисел в интервале от 2 до 20.
Не используйте функцию с().
x <- seq(2, 20, 2) # создадим нужный вектор
x # посмотрим на него
## [1] 2 4 6 8 10 12 14 16 18 20
Создайте наиболее оптимальным способом вектор v:
22, 23, 24, 25, 26, 22, 23, 24, 25, 26, 22, 23, 24, 25, 26, 22, 23, 24, 25, 26
v <- rep(22:26, 4) # создадим нужный вектор
v # посмотрим на него
## [1] 22 23 24 25 26 22 23 24 25 26 22 23 24 25 26 22 23 24 25 26
Возьмите из распределения Пуассона (λ = 3) 10 чисел случайным образом.
Выведите полученный вектор целиком в явном виде.
set.seed(666) # зафиксируем seed для воспроизводимости
rpois(10, 3) # возьмём и сразу выведем требуемый вектор
## [1] 4 1 7 2 2 4 7 3 0 2
Создайте логичесикй вектор а длины 5. Сами придумайте последовательность TRUE и(!) FALSE.
Убедитесь, что получившийся вектор а действительно логического типа.
Посчитайте сумму вектора а (воспользуйтесь функцией sum()).
Кратко поясните, как отработала функция sum() на логическом векторе.
a <- c(T, F, F, T, F) # создадим нужный вектор
typeof(a) # проверим какого он типа
## [1] "logical"
sum(a) # посчитаем сумму
## [1] 2
Сначала логический вектор был преобразован в численный, т.е. значения TRUE заменились на 1, а FALSE — на 0. Потом уже складывать полученные целые числа.
Преобразуйте вектор а из задания №8 в численный.
as.numeric(a) # преобразуем вектор a к численному типу
## [1] 1 0 0 1 0
С помощью какой операции можно получить ответ: “TRUE” “FALSE” “TRUE”?
Обратите внимание на все детали записи предложенного ответа
Правильный ответ: 2. as.character(as.logical(-1:1))
as.character(as.logical(-1:1)) # убедимся, что этот ответ правильный
## [1] "TRUE" "FALSE" "TRUE"
Создайте вектор n вида “a”, “b”, “c” и т.д. Воспользуйтесь набором letters.
Вызовите справку ?letters и обратите внимание на раздел Usage, это может пригодиться когда-нибудь.
Длина вектора n должна быть аналогична длине вектора х из задания №5.
При создании вектора n нельзя указывать длину в виде числа в явном виде.
Какого типа данные содержит вектор n?
n <- letters[1:length(x)] # создадим нужный вектор
n # посмотрим на него
## [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j"
length(x) == length(n) # сравним длины векторов x и n
## [1] TRUE
typeof(n) # посмотрим, какого типа данные в n
## [1] "character"
Задайте элементам вектора х из задания №5 имена в виде вектора из задания №11.
Положите результат в переменную l
l <- x # положим значения в l
names(l) <- n # зададим имена
l # проверим, что получилось
## a b c d e f g h i j
## 2 4 6 8 10 12 14 16 18 20
Возьмите вектор х из задания №5.
Возьмите только последний элемент вектора х, не указывая индекс последнего элемента в явном виде.
x[length(x)]
## [1] 20
Возьмите вектор х из задания №5.
Сколько элементов вектора х имеют значения строго больше 10?
z <- x[x > 10] # отфильтруем вектор по условию
length(z) # определим, сколько элементов удовлетворило условию
## [1] 5
Возьмите вектор х из задания №5.
Замените первый элемент вектора х на любое число.
x[1] <- 13
Возьмите вектор х из задания №5.
Отберите элементы с нечетными индексами.
x[seq(1,length(x), 2)] # отберём элементы с нечётными индексами
## [1] 13 6 10 14 18
Возьмите вектор v из задания №6.
Выведите индексы элементов вектора v, значения которых равны 23.
Воспользуйтесь функцией which().
which(v == 23) # выведем искомые индексы
## [1] 2 7 12 17
Возьмите вектор l из задания №12.
Выведите элемент вектора с:
именем “b”
индексом 3
значением 18
l["b"] # выведем элемент с именем "b"
## b
## 4
l[3] # выведем элемент с индексом 3
## c
## 6
which(l == 18) # выведем элемент со значением 18
## i
## 9
Создайте вектор l из чисел 24 и 26.
Возьмите вектор v из задания №6.
Отберите из вектора v только такие значения, которые есть в векторе l.
Для решения воспользуйтесь оператором %in%.
l <- c(24, 26) # создадим нужный вектор
v[v %in% l] # отберём нужные значения
## [1] 24 26 24 26 24 26 24 26
Воспользуйтесь вектором l из задания №19.
Есть ли хоть одно положительное значение в векторе l? Воспользуйтесь функцией any().
Все ли значения вектора l положительные? Воспользуйтесь функцией all().
any(l > 0) # проверим, есть ди хоть одно положительное значение
## [1] TRUE
all(l > 0) # проверим, все ли значения положительные
## [1] TRUE
Создайте таблицу, заполненную любыми данными на ваше усмотрение, состоящую из двух столбцов и трех строк.
Воспользуйтесь функцией data.frame().
data.frame(species = c("H. sapiens", "S. cerevisiae", "M. musculus"),
number_of_chr = c(23, 16, 20))
## species number_of_chr
## 1 H. sapiens 23
## 2 S. cerevisiae 16
## 3 M. musculus 20
Используйте встроенный набор данных CO2.
Сколько строк и сколько столбцов в таблице? Выведите в явном виде
dim(CO2)[1] # количество строк
## [1] 84
dim(CO2)[2] # количество столбцов
## [1] 5
Опишите разнообразие значений столбца Type в наборе данных CO2 (какие значения представлены и в каком количестве).
Используйте функцию table().
table(CO2$Type) # определим, какие значения и в каком количестве представлены в столбце Type
##
## Quebec Mississippi
## 42 42
Отберите из набора данных CO2 такие строки, где значение столбца conc строго больше среднему значению столбца conc. Сколько получилось строк?
CO2_filtered <- CO2[CO2$conc > mean(CO2$conc),] # отберём нужные строки
nrow(CO2_filtered) # посчитаем количество строк
## [1] 36
Выберите из набора данных CO2 только 1ый и последний столбцы, не указывая в явном виде индекс последнего столбца. Используйте функцию ncol(). Сколько столбцов получилось?
CO2_filtered <- CO2[, c(1, ncol(CO2))] # отберём нужные столбцы
ncol(CO2_filtered) # посчитаем количество столбцов
## [1] 2
Отберите из набора данных CО2 такие значения, где столбец Plant принимает значения Qn1, Qn2 и Qn3 Используйте оператор %in%
Сколько получилось строк?
CO2_filtered <- CO2[CO2$Plant %in% paste("Qn", 1:3, sep=""),] # отберём нужные строки
nrow(CO2_filtered) # посчитаем количество строк
## [1] 21
Воспользуйтесь встроенным набром данных mtcars.
Выведите имя третьей колонки.
colnames(mtcars)[3] # выведем имя третьей колонки
## [1] "disp"
Воспользуйтесь встроенным набром данных mtcars.
Выведите только первый, второй и третий столбцы, а также восьмую и пятую строки.
mtcars[c(5, 8), c(1, 2, 3)] # выведем нужную часть таблицы
## mpg cyl disp
## Hornet Sportabout 18.7 8 360.0
## Merc 240D 24.4 4 146.7
Воспользуйтесь встроенным набром данных mtcars.
Выведите строчку таблицы, где содержится информация о машине Camaro Z28.
Воспользуйтесь функцией rownames().
mtcars[rownames(mtcars) == "Camaro Z28", ] # выведем нужную строку таблицы
## mpg cyl disp hp drat wt qsec vs am gear carb
## Camaro Z28 13.3 8 350 245 3.73 3.84 15.41 0 0 3 4
Выведите все переменные вашего окружения
Удалите все переменные
ls() # выведем все переменные окружения
## [1] "a" "b" "CO2_filtered" "l" "n"
## [6] "v" "x" "y" "z"
rm(list = ls()) # удалим все переменные ...
ls() # ... и убедимся, что они удалились
## character(0)