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