нижний индекс выходит за пределы
Одна распространенная ошибка, с которой вы можете столкнуться в R:
Error in x[, 4] : subscript out of bounds
Эта ошибка возникает при попытке доступа к столбцу или строке несуществующей матрицы.
В этом руководстве представлены точные шаги, которые вы можете использовать для устранения этой ошибки, используя следующую матрицу в качестве примера:
#make this example reproducible set. seed (0) #create matrix with 10 rows and 3 columns x = matrix(data = sample. int (100, 30), nrow = 10, ncol = 3) #print matrix print(x) [,1] [,2] [,3] [1,] 14 51 96 [2,] 68 85 44 [3,] 39 21 33 [4,] 1 54 35 [5,] 34 74 70 [6,] 87 7 86 [7,] 43 73 42 [8,] 100 79 38 [9,] 82 37 20 [10,] 59 92 28Пример №1: нижний индекс выходит за пределы (со строками)
Следующий код пытается получить доступ к 11-й строке матрицы, которой не существует:
#attempt to display 11th row of matrix x[11, ] Error in x[11, ] : subscript out of bounds
Поскольку 11-й строки матрицы не существует, мы получаем 
Если мы не знаем, сколько строк в матрице, мы можем использовать функцию nrow() , чтобы узнать:
#display number of rows in matrix nrow(x) [1] 10
Мы видим, что в матрице всего 10 строк. Таким образом, мы можем использовать только числа меньше или равные 10 при доступе к строкам.
Например, мы можем использовать следующий синтаксис для отображения 10-й строки матрицы:
#display 10th row of matrix x[10, ] [1] 59 92 28Пример №2: нижний индекс выходит за пределы (со столбцами)
Следующий код пытается получить доступ к 4-му столбцу несуществующей матрицы:
#attempt to display 4th column of matrix x[, 4] Error in x[, 4] : subscript out of bounds
Поскольку 4-й столбец матрицы не существует, мы получаем индекс ошибки выхода за границы .
Если мы не знаем, сколько столбцов в матрице, мы можем использовать функцию ncol() , чтобы узнать:
#display number of columns in matrix ncol(x) [1] 3
Мы видим, что в матрице всего 3 столбца.
Таким образом, мы можем использовать только числа меньше или равные 3 при доступе к столбцам.
Например, мы можем использовать следующий синтаксис для отображения третьего столбца матрицы:
#display 3rd column of matrix x[, 3] [1] 96 44 33 35 70 86 42 38 20 28Пример № 3: нижний индекс выходит за пределы (строки и столбцы)
Следующий код пытается получить доступ к несуществующему значению в 11-й строке и 4-м столбце матрицы:
#attempt to display value in 11th row and 4th column x[11, 4] Error in x[11, 4] : subscript out of bounds
Поскольку ни 11-й строки, ни 4-го столбца матрицы не существует, мы получаем нижний индекс ошибки выхода за границы .
Если мы не знаем, сколько строк и столбцов в матрице, мы можем использовать функцию dim() , чтобы узнать:
#display number of rows and columns in matrix dim(x) [1] 10 3
Мы видим, что в матрице всего 10 строк и 3 столбца. Таким образом, мы можем использовать только числа, меньшие или равные этим значениям, при доступе к строкам и столбцам.
Например, мы можем использовать следующий синтаксис для отображения значения в 10-й строке и 3-м столбце матрицы:
#display value in 10th row and 3rd column of matrix x[10, 3] [1] 28Дополнительные ресурсы
В следующих руководствах объясняется, как устранять другие распространенные ошибки в R:
Как исправить в R: имена не совпадают с предыдущими именами
Как исправить в R: более длинная длина объекта не кратна более короткой длине объекта
Как исправить в R: контрасты могут применяться только к факторам с 2 или более уровнями
Почтовый индекс ул. Р.Дрегиса, с. Вольно-Надеждинское, Надеждинский р-н, Приморский край
Почтовые индексы ул. Р.Дрегиса 692481
Почтовые индексы ул. Р.Дрегиса по номерам домов
Во всех домах по ул. Р.Дрегиса индекс 692481
| № дома | Индекс |
|---|---|
| 1 | 692481 |
| 1 к.2 | 692481 |
| 1а | 692481 |
| 1б | 692481 |
| 1в | 692481 |
| 1г | 692481 |
| 2б | 692481 |
| 3а | 692481 |
| 4 | 692481 |
| 4а | 692481 |
| 5 | 692481 |
| 6 | 692481 |
| 6/1 | 692481 |
| 6/1 | 692481 |
| 6/2 | 692481 |
| 7 | 692481 |
| 8 | 692481 |
| 8/1 | 692481 |
| 9 | 692481 |
| 9а | 692481 |
| 9б | 692481 |
| 10 | 692481 |
| 11 | 692481 |
| 11а | 692481 |
| № дома | Индекс |
|---|---|
| 11б | 692481 |
| 12 | 692481 |
| 12а | 692481 |
| 14 | 692481 |
| 15 | 692481 |
| 15а | 692481 |
| 17 | 692481 |
| 19 | 692481 |
| 21 | 692481 |
| 21/2 | 692481 |
| 22 | 692481 |
| 23 | 692481 |
| 24 | 692481 |
| 25 | 692481 |
| 25а | 692481 |
| 26 | 692481 |
| 27 | 692481 |
| 29 | 692481 |
| 31 | 692481 |
| 32 | 692481 |
32 к. 2 | 692481 |
| 32 к.3 | 692481 |
| 32 к.4 | 692481 |
| 33 | 692481 |
| № дома | Индекс |
|---|---|
| 33а | 692481 |
| 34 | 692481 |
| 35 | 692481 |
| 36 | 692481 |
| 37 | 692481 |
| 38 | 692481 |
| 38/2 | 692481 |
| 42 | 692481 |
| 44 | 692481 |
| 44а | 692481 |
| 46 | 692481 |
| 48 | 692481 |
| 48а | 692481 |
| 50 | 692481 |
| 52 | 692481 |
| 54 | 692481 |
| 56 | 692481 |
| 58 | 692481 |
| 60 | 692481 |
| 60/1 | 692481 |
| 62 | 692481 |
| 64 | 692481 |
| № дома | Индекс |
|---|---|
| 1 | 692481 |
1 к. 2 | 692481 |
| 1а | 692481 |
| 1б | 692481 |
| 1в | 692481 |
| 1г | 692481 |
| 2б | 692481 |
| 3а | 692481 |
| 4 | 692481 |
| 4а | 692481 |
| 5 | 692481 |
| 6 | 692481 |
| 6/1 | 692481 |
| 6/1 | 692481 |
| 6/2 | 692481 |
| 7 | 692481 |
| 8 | 692481 |
| 8/1 | 692481 |
| 9 | 692481 |
| 9а | 692481 |
| 9б | 692481 |
| 10 | 692481 |
| 11 | 692481 |
| 11а | 692481 |
| 11б | 692481 |
| 12 | 692481 |
| 12а | 692481 |
| 14 | 692481 |
| 15 | 692481 |
| 15а | 692481 |
| 17 | 692481 |
| 19 | 692481 |
| 21 | 692481 |
| 21/2 | 692481 |
| 22 | 692481 |
| № дома | Индекс |
|---|---|
| 23 | 692481 |
| 24 | 692481 |
| 25 | 692481 |
| 25а | 692481 |
| 26 | 692481 |
| 27 | 692481 |
| 29 | 692481 |
| 31 | 692481 |
| 32 | 692481 |
32 к. 2 | 692481 |
| 32 к.3 | 692481 |
| 32 к.4 | 692481 |
| 33 | 692481 |
| 33а | 692481 |
| 34 | 692481 |
| 35 | 692481 |
| 36 | 692481 |
| 37 | 692481 |
| 38 | 692481 |
| 38/2 | 692481 |
| 42 | 692481 |
| 44 | 692481 |
| 44а | 692481 |
| 46 | 692481 |
| 48 | 692481 |
| 48а | 692481 |
| 50 | 692481 |
| 52 | 692481 |
| 54 | 692481 |
| 56 | 692481 |
| 58 | 692481 |
| 60 | 692481 |
| 60/1 | 692481 |
| 62 | 692481 |
| 64 | 692481 |
Номера домов по индексу
| Индекс | Номера домов |
|---|---|
| 692481 | 1, 1 к. 2, 1а, 1б, 1в, 1г, 2б, 3а, 4, 4а, 5, 6, 6/1, 6/1, 6/2, 7, 8, 8/1, 9, 9а, 9б, 10, 11, 11а, 11б, 12, 12а, 14, 15, 15а, 17, 19, 21, 21/2, 22, 23, 24, 25, 25а, 26, 27, 29, 31, 32, 32 к.2, 32 к.3, 32 к.4, 33, 33а, 34, 35, 36, 37, 38, 38/2, 42, 44, 44а, 46, 48, 48а, 50, 52, 54, 56, 58, 60, 60/1, 62, 64 |
Адрес почтового отделения обслуживающего ул. Р.Дрегиса
692481 — Р.Дрегиса ул, 1, с Вольно-Надеждинское, Приморский край
Информация об адресе
| Адрес: | ул. Р.Дрегиса, с. Вольно-Надеждинское, Надеждинский р-н, Приморский край |
| Почтовые индексы: | 692481 |
| Образец написания индекса: | |
| ОКАТО: | 05223000013 |
| ОКТМО: | 05623402101 |
| Код ИФНС (физические лица): | 2502 |
| Код ИФНС (юридические лица): | 2502 |
| Код адресного объекта одной строкой с признаком актуальности: | 25011000001002000 |
| Код адресного объекта одной строкой без признака актуальности: | 250110000010020 |
| Реестровый номер адресного объекта: | 056234021010000002001 |
| Источник данных: | ФИАС в формате ГАР |
| Данные обновлены: | 2022-01-17 15:45:52 |
ул.
Р.Дрегиса на картеПочтовые индексы с. Вольно-Надеждинское
Почтовые индексы Надеждинский р-н
Почтовые индексы Приморский край
Узнать почтовый индекс по адресу
Indexing — R Spatial
Существует несколько способов доступа или замены значений в векторах или других структуры данных. Наиболее распространенным подходом является использование «индексации». Это также называется «нарезкой».
Обратите внимание, что скобки [ ] используются для индексации, тогда как
вы уже видели, что скобки ( ) используются для вызова
функция. Позже вы также увидите использование { } . Это очень
важно не перепутать их.
Вектор
Вот несколько примеров, которые показывают, как можно получить элементы векторов путем индексации.
б <- 10:15 б ## [1] 10 11 12 13 14 15
Получить первый элемент вектора
b[1] ## [1] 10
Получить первый второй элемент вектора
b[2] ## [1] 11
Получить элементы 2 и 3
b[2:3] ## [1] 11 12 # это то же самое, что и б[с(2,3)] ## [1] 11 12 # или я <- 2:3 б[я] ## [1] 11 12
Теперь более сложный пример, вернуть все элементы, кроме второго
b[c(1,3:6)] ## [1] 10 12 13 14 15 # или намного проще: Би 2] ## [1] 10 12 13 14 15
Вы также можете использовать индекс для изменения значений
b[1] <- 11 б ## [1] 11 11 12 13 14 15 б[3:6] <- -99 б ## [1] 11 11 -99 -99 -99 -99
Важной характеристикой системы векторизации R является то, что
более короткие векторы «перерабатываются».
Здесь вы видите переработку в действии. Сначала мы присваиваем один номер
первые три элемента b , поэтому число используется три раза. Затем
мы присваиваем два числа последовательности от 3 до 6, так что оба числа
используются дважды.
б[1:3] <- 2 б ## [1] 2 2 2 -99 -99 -99 б[3:6] <- с(10,20) б ## [1] 2 2 10 20 10 20
Матрица
Рассмотрим матрицу m .
м <- матрица(1:9, nrow=3, ncol=3, byrow=ИСТИНА)
colnames(m) <- c('a', 'b', 'c')
м
## а б в
## [1,] 1 2 3
## [2,] 4 5 6
## [3,] 7 8 9
Как и векторы, значения матриц могут быть доступны посредством индексации. Там
есть разные способы сделать это, но, как правило, проще всего использовать два
числа в двойном индексе, первый для номера строки и
второй для номера столбца (ов).
# одно значение м[2,2] ## б ## 5 # Еще один м[1,3] ## с ## 3
Вы также можете получить несколько значений одновременно.
# 2 столбца и строки м[1:2,1:2] ## а б ## [1,] 1 2 ## [2,] 4 5 # весь ряд м[2, ] ## а б в ## 4 5 6 # весь столбец м[ ,2] ## [1] 2 5 8
Или используйте имена столбцов для поднастройки.
#один столбец
м[ 'б']
## [1] 2 5 8
# два столбца
м[ с('а', 'с')]
## а в
## [1,] 1 3
## [2,] 4 6
## [3,] 7 9
Вместо индексации двумя номерами вы также можете использовать один номер. Вы можете думать об этом как о «сотовом номере». Ячейки пронумерованы по столбцам (т. е. сначала строки в первом столбце, затем во втором столбце, и т. д.). Таким образом,
м[2,2] ## б ## 5 # эквивалентно м[5] ## [1] 5
Обратите внимание, что
м[ ,2] ## [1] 2 5 8
возвращает вектор. Это связано с тем, что матрица с одним столбцом может быть
упрощается до вектора.
В этом случае матричная структура «сбрасывается».
Это не всегда желательно, и чтобы этого не происходило, можно
использовать drop=FALSE аргумент.
м[ , 2, падение=ЛОЖЬ] ## б ## [1,] 2 ## [2,] 5 ## [3,] 8
Установка значений матрицы аналогична тому, как вы делаете это для вектор, за исключением того, что теперь вам нужно иметь дело с двумя измерениями.
# одно значение м[1,1] <- 5 м ## а б в ## [1,] 5 2 3 ## [2,] 4 5 6 ## [3,] 7 8 9 # ряд м[3,] <- 10 м ## а б в ## [1,] 5 2 3 ## [2,] 4 5 6 ## [3,] 10 10 10 # две колонны, с рециркуляцией м[2:3] <- 3:1 м ## а б в ## [1,] 5 3 3 ## [2,] 4 2 2 ## [3,] 10 1 1
Есть функция для получения (или установки) значений по диагонали матрица.
диаг.(м) ## [1] 5 2 1 диаг.(м) <- 0 м ## а б в ## [1,] 0 3 3 ## [2,] 4 0 2 ## [3,] 10 1 0
Список
Списки индексации могут немного сбивать с толку, так как вы оба можете ссылаться на
элементы списка или элементы данных (возможно, матрицы) в
один из элементов списка.
Ниже обратите внимание на разницу в том, что двойное
кронштейны сделать. e[3] возвращает список (длиной 1), но e[[3]] возвращает то, что находится внутри этого элемента списка (в данном случае матрицу)
m <- matrix(1:9, nrow=3, ncol=3, byrow=TRUE)
colnames(m) <- c('a', 'b', 'c')
e <- list(list(1:3), c('a', 'b', 'c', 'd'), m)
Мы можем получить доступ к данным внутри элемента списка, комбинируя двойные и одинарные кронштейны. При использовании двойных скобок структура списка отбрасывается.
е[2] ## [[1]] ## [1] "а" "б" "в" "г" е[[2]] ## [1] "а" "б" "в" "г"
Элементы списка могут иметь имена.
имен(e) <- c('zzz', 'xyz', 'abc')
И элементы могут быть извлечены по их имени, либо как индекс, либо
с помощью оператора $ (долларов).
e$xyz ## [1] "а" "б" "в" "г" е[['xyz']] ## [1] "а" "б" "в" "г"
$ также можно использовать с объектами data.
frame (специальный список,
в конце концов), но не с матрицами.
Data.frame
Индексирование a data.frame вообще можно делать как для матриц так и для
списки.
Сначала создайте data.frame из матрицы m .
d <- data.frame(m) класс (г) ## [1] "data.frame"
Вы можете извлечь столбец по номеру столбца.
д[2] ## [1] 2 5 8
Альтернативный способ адресации номера столбца в data.frame .
д[2] ## б ## 1 2 ## 2 5 ## 3 8
Обратите внимание, что тогда как [2] будет вторым элементом в матрице ,
он относится ко второму столбцу в data.frame . Это потому, что data.frame — это особый вид списка, а не особый вид
матрица.
Вы также можете использовать имя столбца для получения значений. Этот подход также работает
для матрицы .
д[ 'б'] ## [1] 2 5 8
Но с data.frame вы также можете сделать
d$b ## [1] 2 5 8 # или это д[['б']] ## [1] 2 5 8
Все они возвращают вектор. То есть сложность data.frame структура была удалена . Этого не происходит, когда вы делаете
d['b'] ## б ## 1 2 ## 2 5 ## 3 8
или
d[ , 'b', drop=FALSE] ## б ## 1 2 ## 2 5 ## 3 8
Зачем вам это падение бизнес? Ну во многих случаях Функции R требуют определенного типа данных, например, матрицы или data.frame и сообщить об ошибке, если они получат что-то еще. Один
распространенная ситуация заключается в том, что вы думаете, что предоставляете данные правильного типа,
например, data.frame , но на самом деле вы предоставляете вектор , потому что структура отбросила , если вы подмножили данные
в один столбец.
Какие, %в% и совпадают
Иногда у вас нет нужных вам индексов, и поэтому вам нужно найти их. Например, каковы индексы элементов вектора, имеют значения выше 15?
х <- 10:20 я <- который (х > 15) Икс ## [1] 10 11 12 13 14 15 16 17 18 19 20 я ## [1] 7 8 9 10 11 х[я] ## [1] 16 17 18 19 20
Обратите внимание, однако, что вы также можете использовать логический вектор для индексации
(значения, для которых индекс равен ИСТИНА возвращаются).
х <- 10:20 б <- х > 15 Икс ## [1] 10 11 12 13 14 15 16 17 18 19 20 б ## [1] FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE х[б] ## [1] 16 17 18 19 20
Очень полезный оператор, который позволяет узнать, является ли набор значений
присутствует в векторе %в% .
х <- 10:20 j <- c(7,9,11,13) j %in% x ## [1] ЛОЖЬ ЛОЖЬ ИСТИНА ИСТИНА который(j%in%x) ## [1] 3 4
Другая удобная аналогичная функция — match :
match(j, x) ## [1] НП НП 2 4
Это говорит нам о том, что третье значение в j равно второму значению
в x и что четвертое значение в ‘j’ равно четвертому значению
в разрешении х.
соответствует асимметрично: соответствует (j,x) не совпадает с совпадение(x,j) .
совпадение(х, j) ## [1] NA 3 NA 4 NA NA NA NA NA NA NA
Это показывает, что второе значение в x равно третьему значению в
‘j’ и т. д.
Векторы и индексирование — наука о данных с R
R имеет специальную структуру данных, называемую вектором. Вектор — это одномерный набор объектов одного типа. Чаще всего вектор будет просто последовательностью чисел. Мы можем создать последовательность чисел, используя оператор : .
чисел <- 1:10 номера
## [1] 1 2 3 4 5 6 7 8 9числа
## [1] 2 4 8 16 32 64 128 256 512 1024
sin(числа)
## [1] 0.8414710 0.9092974 0.1411200 -0.72589189 -0.72589589 -0.72589589 -0.75689589 ## [7] 0.6569866 0.9893582 0.4121185 -0.5440211
Мы также можем создать вектор с помощью функции c() ( c означает объединение, если вам интересно).
concat <- c(4, 17, -1, 55, 2) concat
## [1] 4 17 -1 55 2
Индексация
Часто нам не нужно получать весь вектор. Возможно, нам нужен только один элемент или набор определенных элементов. Мы делаем это с помощью индексации (используются скобки [] ).
Чтобы получить первый элемент вектора, мы могли бы сделать следующее. В R индексы массивов начинаются с 1 — 1-й элемент имеет индекс 1. Это отличается от языков на основе 0, таких как C, Python или Java, где первый элемент имеет индекс 0.
concat[1]
# # [1] 4
Чтобы получить другие элементы, мы могли бы сделать следующее:
concat[2] # второй элемент
## [1] 17
concat[length(concat)] # последний элемент
## [1] 2
Обратите внимание, что для второго примера мы поместили функцию внутри квадратных скобок. В этом случае length() используется для получения длины вектора, а поскольку длина вектора будет равна индексу его последнего элемента, это отличный способ получить последний элемент вектора.
.
В квадратных скобках можно поместить что угодно. Например, помещение другого вектора в скобки дает нам несколько значений.
concat[1:4]
## [1] 4 17 -1 55
concat[c(3, 5)]
## [1] -1 2
Мы можем использовать эту технику для переназначения определенные значения внутри вектора. Например, мы можем изменить 3-е и 5-е значения на 76 с помощью следующего кода:
concat[c(3, 5)] <- 76 concat
## [1] 4 17 76 55 76
Можно даже индексировать за пределами вектора. Обратите внимание, что R «заполняет пробелы» значениями NA . NA — это заполнитель R для «нет данных» (поскольку 0 часто появляется в реальных данных).
concat[10] <- 4.3 concat
## [1] 4.0 17.0 76.0 55.0 76.0 NA NA NA NA 4.3
НИКОГДА ЭТОГО НЕ ДЕЛАЙТЕ. Хотя на самом деле это допустимый код в R (индексирование за пределами размера вектора является ошибкой в большинстве других языков), это сказывается на производительности.
Позже мы более подробно рассмотрим, почему.
Матрицы
Матрица представляет собой двумерный вектор. Давайте создадим матрицу с матрица() функция. Одно важное замечание: функции часто имеют необязательные, «дополнительные» аргументы, которые указываются в нотации имя=значение . В этом случае мы создаем матрицу с 2 строками и 5 столбцами.
мат <- матрица (1:10, nrow=2, ncol=5) мат
## [1] [2] [3] [4] [5] ## [1,] 1 3 5 7 9 ## [2,] 2 4 6 8 10
Все те же операции, которые работают с векторами, также работают и с матрицами.
мат + 20
## [1] [2] [3] [4] [5] ## [1,] 21 23 25 27 29 ## [2,] 22 24 26 28 30
dim(mat) # получить размеры матрицы
## [1] 2 5
length(mat) # количество элементов в матрице
## [ 1] 10
Однако индексация матрицы немного отличается от индексации вектора. Теперь у нас есть не одно, а два измерения на выбор. При индексировании с использованием объекта с несколькими измерениями мы используем , для их разделения.
В R строки находятся слева от запятой, а столбцы — справа (третье измерение будет после второй запятой и так далее…). Обратите внимание, что R на самом деле пытается нам помочь. Когда мы напечатали нашу матрицу, в строках было [#,] рядом с ними, а столбцы имеют [#] . Это фактически показывает нам точный синтаксис, который нам нужен для получения каждого элемента.
Таким образом, используя выходные данные матрицы, mat[1,] должны дать нам первую строку, а mat[4] должны дать нам четвертый столбец. Давайте проверим это:
mat[1,]
## [1] 1 3 5 7 9
mat[4]
## [1] 7 8
Мы можем индексировать как строки, так и столбцы в в то же время, чтобы получить определенный элемент.
mat[1, 1] # взять первый ряд, первый столбец
## [1] 1
mat[2, 1:3] # элементы 1-3 второго ряда
## [1] 2 4 6
Упражнение. Захват несвязанных элементов
Попробуйте получить столбцы 1, 4 и 5 первой строки одной командой.
Упражнение. Чтение документации
Создайте матрицу 8x5, используя числа 1:40. Посмотрите, сможете ли вы заполнить его по строкам, а не по столбцам.
Подсказка: вы должны проверить документацию для матрица() .
Различные типы данных
В большинстве языков программирования текст называется строкой. Чтобы создать текст в R, мы просто заключаем его в двойные ( " ) или одинарные ( ' ) кавычки. Мы уже видели пример строки ( print('hello world!') ).
"это строка"
## [1] "это строка"
paste('мы можем комбинировать строки', 'с помощью функции paste()') ## [1] "мы может объединять строки с помощью функции paste()"
Что произойдет, если мы добавим строку к вектору чисел?
чисел <- c(1, 4, 9, 10) числа
## [1] 1 4 9 10
числа[3] <- "тестирование..." числа
## [1] "1" "4" "тестирование..." "10"
Весь наш вектор чисел превратился в строки! Это важное свойство векторов и матриц: они могут содержать только один тип данных! Если мы попытаемся поместить другой тип в вектор, R преобразует весь вектор в новый тип данных.
Опять же, это преобразование оказывает сильное влияние на производительность, особенно для больших векторов или матриц. R необходимо создать новый вектор с нуля, а затем скопировать и преобразовать каждый элемент.
Итак, давайте узнаем о различных типах данных R. Есть еще несколько типов, которые мы не рассматриваем здесь или рассмотрим позже (например, факторы). Это просто наиболее распространенные типы данных, с которыми мы столкнемся.
Числовые
Числовые переменные могут содержать любое десятичное число, положительное или отрицательное. В других языках они называются поплавками. Обратите внимание, что это тип числа по умолчанию в R.
Чтобы создать числовое значение, все, что нам нужно сделать, это ввести его как обычно.
1
## [1] 1
-3.5
## [1] -3.5
Мы можем преобразовать другую переменную в числовую с помощью функции as.numeric() . Это работает только со значениями, которые можно легко преобразовать.
as.numeric("456") # это работает ## [1] 456
as.numeric("seven") # это не работает 1] нет данных Целые числа
Целые числа представляют любое целое число, положительное или отрицательное. Они не могут хранить десятичные числа.
Чтобы создать число явно как целое число, добавьте после него L .
15L
## [1] 15
Мы можем преобразовать набор данных в целое число с помощью функции as.integer() .
as.integer(c("65.3", "4")) ## [1] 65 4
Символы (строки)
Как упоминалось ранее, строки представляют собой наборы текста. Мы можем превратить что-то в строку с помощью as.character() функция.
as.character(TRUE)
## [1] "TRUE"
Логические (логические) значения
Есть только два логических значения: TRUE и FALSE . Они используются в буквальном смысле для обозначения того, является ли утверждение истинным или ложным.
Как обычно, мы можем преобразовать что-либо в логическое/логическое значение с помощью функции as.logical() . Важно отметить, что это очень хорошо демонстрирует, что происходит, когда мы превращаем один тип данных в другой. Если один тип данных не может содержать дополнительную информацию из другого, эта информация теряется во время преобразования.
пятьдесят <- as.logical(50) пятьдесят
## [1] TRUE
as.numeric(fifty)
## [1] 1
Определение типов данных
тип данных с функцией class() :
class(14)
## [1] "numeric"
class(1L)
## [1] "integer"
class (ИСТИНА)
## [1] "логический"
class("текст") ## [1] "character"
class(NA)
## [1] "logical"
Обратите внимание, что NA могут быть любого типа и часто используются в качестве заполнителей для отсутствующих данных .

2
2
2
2, 1а, 1б, 1в, 1г, 2б, 3а, 4, 4а, 5, 6, 6/1, 6/1, 6/2, 7, 8, 8/1, 9, 9а, 9б, 10, 11, 11а, 11б, 12, 12а, 14, 15, 15а, 17, 19, 21, 21/2, 22, 23, 24, 25, 25а, 26, 27, 29, 31, 32, 32 к.2, 32 к.3, 32 к.4, 33, 33а, 34, 35, 36, 37, 38, 38/2, 42, 44, 44а, 46, 48, 48а, 50, 52, 54, 56, 58, 60, 60/1, 62, 64