Для создания векторов можно использовать последовательности (для владеющих Python: аналог range()
и arange()
, но в отличие от Python, здесь в вектор включаются оба конца). Например, последовательность из целых значений от 0 до 10:
0:10
## [1] 0 1 2 3 4 5 6 7 8 9 10
Мы можем сохранить результат в вектор my_seq
.
my_seq <- 1:10
my_seq
## [1] 1 2 3 4 5 6 7 8 9 10
А вот последовательность из целых начений от 1 до 10 с шагом 2:
seq(from = 1, to = 10, by = 2)
## [1] 1 3 5 7 9
Названия параметров можем опускать, если сохраняем их порядок:
seq(1, 10, 2)
## [1] 1 3 5 7 9
Шаг также может быть дробным:
seq(1, 10, 0.5)
## [1] 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5
## [15] 8.0 8.5 9.0 9.5 10.0
В R можно быстро составить вектор из повторяющихся значений. Например, три раза повторить “Repeat me”:
rep('Repeat me', 3)
## [1] "Repeat me" "Repeat me" "Repeat me"
Или три раза повторить вектор с двумя значениями 0 и 1:
rep(c(1, 0), 3)
## [1] 1 0 1 0 1 0
rep(c('Yes','No'), each = 4) # повторить 4 раза каждый элемент вектора
## [1] "Yes" "Yes" "Yes" "Yes" "No" "No" "No" "No"
А как получить вектор без повторяющихся значений? Для этого есть функция unique()
:
v <- c(1, 1, 0, 2, 2, 3, 5, 1, 8, 2)
unique(v)
## [1] 1 0 2 3 5 8
Как посчитать, сколько раз в векторе встречаются различные значения? Для этого есть функция table()
:
table(v)
## v
## 0 1 2 3 5 8
## 1 3 3 1 1 1
Функция table()
возвращает абсолютные частоты значений. Чтобы получить относительные частоты, то есть доли, можно посчитать их самостоятельно:
table(v)/sum(table(v))
## v
## 0 1 2 3 5 8
## 0.1 0.3 0.3 0.1 0.1 0.1
И даже перевести в проценты:
table(v)/sum(table(v)) * 100
## v
## 0 1 2 3 5 8
## 10 30 30 10 10 10
Можно создавать векторы с пропущенными значениями (NAs, от “not applicable”):
w <- c(0, 1, NA, NA)
w
## [1] 0 1 NA NA
Проверим, являются ли элементы пропущенными значениями:
is.na(w) # проверяем, является ли NA
## [1] FALSE FALSE TRUE TRUE
which(is.na(w)) # возвращаем индексы NAs
## [1] 3 4
А так не сработает, будьте бдительны:
which(w == NA)
## integer(0)
Обратите внимание: NA указывается без кавычек! Это не текст, который кодирует пропущенные значения, а особый «тип» данных (наличие NA не изменяет тип переменной, то есть, если NA встречаются в числовой переменной, переменная будет восприниматься R как числовая).