English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Массивы в R

Массивы также являются объектами в R-языке, и в R можно создавать одномерные или многомерные массивы.

Массивы в R-языке представляют собой набор элементов одного типа, а матрица matrix, которую мы изучали ранее, на самом деле является двумерным массивом.

Связь между векторами, матрицами и массивами можно увидеть на следующем рисунке:

Создание массивов в R-языке выполняется с помощью функции array(), которая использует вектор в качестве входного параметра и может использовать dim для установки размеров массива.

Синтаксис функции array() выглядит следующим образом:

array(data = NA, dim = length(data), dimnames = NULL)

Описание параметров:

  • data - вектор, элементы массива.

  • dim - размеры массива, по умолчанию это одномерный массив.

  • dimnames - имена измерений, это список, по умолчанию имена не устанавливаются.

В следующем примере мы создаем двухмерный массив 3 строки и 3 столбца:

# Создание двух векторов различной длины
vector1 <- c(5,9,3)
vector2 <- c(10,11,12,13,14,15)
# Создание массива
result <- array(c(vector1,vector2),dim = c(3,3,2))
print(result)

Результат выполнения вышеуказанного кода:

, , 1
     [,1] [,2] [,3]
[1,]    5   10   13
[2,]    9   11   14
[3,]    3   12   15
, , 2
     [,1] [,2] [,3]
[1,]    5   10   13
[2,]    9   11   14
[3,]    3   12   15

Используйте параметр dimnames для установки имен для каждого измерения:

# Создание двух векторов различной длины
vector1 <- c(5,9,3)
vector2 <- c(10,11,12,13,14,15)
column.names <- c("COL1","COL2","COL3")
row.names <- c("ROW1","ROW2","ROW3")
matrix.names <- c("Matrix1","Matrix2")
# Создание массива и установка имен для каждого измерения
result <- array(c(vector1,vector2),dim = c(3,3,2),dimnames = list(row.names,column.names,matrix.names))
print(result)

Результат выполнения вышеуказанного кода:

, , Matrix1
     COL1 COL2 COL3
ROW1          5          10          13
ROW2          9          11          14
ROW3          3          12          15
, , Matrix2
     COL1 COL2 COL3
ROW1          5          10          13
ROW2          9          11          14
ROW3          3          12          15

Доступ к элементам массива

Если вы хотите получить элемент массива, вы можете использовать индекс столбца и индекс строки, аналогично координатам.

# Создание двух векторов различной длины
vector1 <- c(5,9,3)
vector2 <- c(10,11,12,13,14,15)
column.names <- c("COL1","COL2","COL3")
row.names <- c("ROW1","ROW2","ROW3")
matrix.names <- c("Matrix1","Matrix2")
# Создание массива
result <- array(c(vector1,vector2),dim = c(3,3,2),dimnames = list(row.names, column.names, matrix.names))
# Показываем элемент второй матрицы массива в третьем ряду
print(result[3,,2])
# Показываем элемент первой матрицы массива в первом ряду и третьем столбце
print(result[1,3,1])
# Вывод второй матрицы
print(result[,,2])

Результат выполнения вышеуказанного кода:

COL1 COL2 COL3 
   3 12 15 
[1] 13
     COL1 COL2 COL3
ROW1          5          10          13
ROW2          9          11          14
ROW3          3          12          15

Операции с элементами массива

Поскольку массив состоит из нескольких многомерных матриц, мы можем получить доступ к элементам массива через элементы матриц.

# Создание двух векторов различной длины
vector1 <- c(5,9,3)
vector2 <- c(10,11,12,13,14,15)
# Создание массива
array1 <- array(c(vector1,vector2),dim = c(3,3,2))
# Создание двух векторов различной длины
vector3 <- c(9,1,0)
vector4 <- c(6,0,11,3,14,1,2,6,9)
array2 <- array(c(vector1,vector2),dim = c(3,3,2))
# Создание матриц из массива
matrix1 <- array1[,,2]
matrix2 <- array2[,,2]
# Сложение матриц
result <- matrix1+matrix2
print(result)

Результат выполнения вышеуказанного кода:

     [,1] [,2] [,3]
[1,]   10   20   26
[2,]   18   22   28
[3,]    6   24   30

Кроме того, мы можем использовать apply() Элементы массива выполняют вычисления поперек различных измерений, синтаксис формата如下:

apply(x, margin, fun)

Описание параметров:

  • x  Массив

  • Порог Название данных

  • fun Функция вычисления

Ниже мы используем функцию apply() для вычисления суммы чисел в каждой строке двух матриц массива.

# Создание двух векторов различной длины
vector1 <- c(5,9,3)
vector2 <- c(10,11,12,13,14,15)
# Создание массива
new.array <- array(c(vector1,vector2),dim = c(3,3,2))
print(new.array)
# Сумма всех чисел в первой строке матрицы массива
result <- apply(new.array, c(1), sum)
print(result)

Результат выполнения вышеуказанного кода:

, , 1
     [,1] [,2] [,3]
[1,]    5   10   13
[2,]    9   11   14
[3,]    3   12   15
, , 2
     [,1] [,2] [,3]
[1,]    5   10   13
[2,]    9   11   14
[3,]    3   12   15