Индекс r: index function — RDocumentation

нижний индекс выходит за пределы


Одна распространенная ошибка, с которой вы можете столкнуться в 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

№ домаИндекс
1692481
1 к.2692481
692481
692481
692481
692481
692481
692481
4692481
692481
5692481
6692481
6/1692481
6/1692481
6/2692481
7692481
8692481
8/1692481
9692481
692481
692481
10692481
11692481
11а692481
№ домаИндекс
11б692481
12692481
12а692481
14692481
15692481
15а692481
17692481
19692481
21692481
21/2692481
22692481
23692481
24692481
25692481
25а692481
26692481
27692481
29692481
31692481
32692481
32 к. 2692481
32 к.3692481
32 к.4692481
33692481
№ домаИндекс
33а692481
34692481
35692481
36692481
37692481
38692481
38/2692481
42692481
44692481
44а692481
46692481
48692481
48а692481
50692481
52692481
54692481
56692481
58692481
60692481
60/1692481
62692481
64692481

№ домаИндекс
1692481
1 к. 2692481
692481
692481
692481
692481
692481
692481
4692481
692481
5692481
6692481
6/1692481
6/1692481
6/2692481
7692481
8692481
8/1692481
9692481
692481
692481
10692481
11692481
11а692481
11б692481
12692481
12а692481
14692481
15692481
15а692481
17692481
19692481
21692481
21/2692481
22692481
№ домаИндекс
23692481
24692481
25692481
25а692481
26692481
27692481
29692481
31692481
32692481
32 к. 2692481
32 к.3692481
32 к.4692481
33692481
33а692481
34692481
35692481
36692481
37692481
38692481
38/2692481
42692481
44692481
44а692481
46692481
48692481
48а692481
50692481
52692481
54692481
56692481
58692481
60692481
60/1692481
62692481
64692481

Номера домов по индексу

ИндексНомера домов
6924811, 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 могут быть любого типа и часто используются в качестве заполнителей для отсутствующих данных .

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *