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

R 数组

El array también es un objeto en R, y R puede crear arrays unidimensionales o multidimensionales.

El array en R es una colección de tipos de datos idénticos, y la matriz matrix que hemos aprendido anteriormente es en realidad un array bidimensional.

La relación entre vector, matriz y array se puede ver en la siguiente imagen:

El lenguaje R crea arrays utilizando la función array(), que utiliza un vector como parámetro de entrada, y se puede usar dim para establecer la dimensión del array.

El formato de sintaxis de la función array() es el siguiente:

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

参数说明:

  • data vector, elementos del array.

  • dim de la dimensión del array, por defecto es un array unidimensional.

  • dimnames de la dimensión, debe ser una lista, por defecto no se establecen nombres.

En el siguiente ejemplo, creamos una 3 Fila 3 Matriz bidimensional de columnas:

# 创建两个不同长度的向量
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

Utilice el parámetro dimnames para establecer los nombres de las dimensiones: :

# 创建两个不同长度的向量
vector1 <- c(5,9,3)
vector2 <- c(10,11,12,13,14,15)
nombres_de_columna <- c("COL1","COL"}2","COL"}3")
row.names <- c("ROW1","ROW2","ROW3")
matrix.names <- c("Matrix1","Matrix2")
# Crear un array y establecer los nombres de las dimensiones
result <- array(c(vector1,vector2),dim = c(3,3,2),dimnames = list(nombres_de_fila,nombres_de_columna,nombres_de_matriz))
print(result)

执行以上代码输出结果为:

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

Acceder a elementos del array

Si desea obtener elementos de un array, puede hacerlo utilizando el índice de columna y el índice de fila, en forma de coordenadas.

# 创建两个不同长度的向量
vector1 <- c(5,9,3)
vector2 <- c(10,11,12,13,14,15)
nombres_de_columna <- c("COL1","COL"}2","COL"}3")
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  数组

  • margin 数据名称

  • 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