跳到主要内容

R语言数组

提示
  1. 数组的定义和特点:R 语言中的数组是一种数据结构,用于存储相同类型的数据,并且可以有超过两个维度。
  2. 创建数组的方法:使用 array() 函数创建数组,其中 vector 是数据项,dim 是维度(如行数、列数和矩阵数量)。
  3. 访问和检查数组元素:使用向量索引操作符 [ ] 来访问特定元素或整行/列,%in% 运算符检查元素是否存在于数组中。

数组是一种数据结构,可以在超过两个维度中存储相同类型的数据。

向量、矩阵和数组之间的唯一区别是

  • 向量是一维数组
  • 矩阵是二维数组
  • 数组可以有超过两个维度

在学习数组之前,请确保你了解了 R 矩阵R 向量

在 R 中创建数组

在 R 中,我们使用 array() 函数来创建数组。

array() 函数的语法是

array(vector, dim = c(nrow, ncol, nmat))

这里,

  • vector - 相同类型的数据项
  • nrow - 行数
  • ncol - 列数
  • nmat - nrow * ncol 维度的矩阵数量

让我们看一个例子,

# 创建两个 2 行 3 列的矩阵
array1 <- array(c(1:12), dim = c(2,3,2))

print(array1)

输出

, , 1

[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6

, , 2

[,1] [,2] [,3]
[1,] 7 9 11
[2,] 8 10 12

在上面的例子中,我们使用了 array() 函数创建了名为 array1 的数组。注意传递给 array() 的参数,

array(c(1:15), dim = c(2,3,2))

这里,

  • c(1:12) - 从 112 的值的向量
  • dim = c(2,3,2) - 创建 2 行 3 列 维度的两个矩阵

最后,112 的数字被排列在两个 2 行 3 列 的矩阵中并被打印出来。

访问数组元素

我们在 R 中使用向量索引操作符 [ ] 来访问数组的特定元素。

访问数组元素的语法是

array[n1, n2, mat_level]

这里,

  • n1 - 指定行位置
  • n2 - 指定列位置
  • mat_level - 指定矩阵级别

让我们看一个例子,

# 创建两个 2 行 3 列的矩阵
array1 <- array(c(1:12), dim = c(2,3,2))

print(array1)

# 访问第二个矩阵中第 1 行第 3 列的元素
cat("\nDesired Element:", array1[1, 3, 2])

输出

, , 1

[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6

, , 2

[,1] [,2] [,3]
[1,] 7 9 11
[2,] 8 10 12


Desired Element: 11

在上述示例中,我们创建了一个名为 array1 的数组,其中包含两个 23 列的矩阵。注意索引操作符 [] 的使用,

array1[1, 3, 2]

这里,[1, 3, 2] 指定我们正在尝试访问第 2 个矩阵的第 1 行第 3 列的元素,即 11

访问整个行或列

在 R 语言中,我们还可以根据在 [] 中传递的值来访问整个行或列。

  • [c(n), ,mat_level] - 返回第 n 行的所有元素。
  • [ ,c(n), mat_level] - 返回第 n 列的所有元素。

例如,

# 创建一个两个 2 行 3 列的矩阵
array1 <- array(c(1:12), dim = c(2,3,2))

print(array1)


# 访问第 1 个矩阵第 2 列的所有元素
cat("\n第 1 个矩阵第 2 列的元素:", array1[,c(2),1])

# 访问第 2 个矩阵第 1 行的所有元素
cat("\n第 2 个矩阵第 1 行的元素:", array1[c(1), ,2])

输出

, , 1

[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6

, , 2

[,1] [,2] [,3]
[1,] 7 9 11
[2,] 8 10 12


1 个矩阵第 2 列的元素: 3 4
2 个矩阵第 1 行的元素: 7 9 11

这里,

  • array1[,c(2),1] - 访问第 1 个矩阵的第 2 列元素
  • array1[c(1), ,2] - 访问第 2 个矩阵的第 1

检查元素是否存在

在 R 语言中,我们使用 %in% 运算符来检查指定元素是否存在于矩阵中,并返回一个布尔值。

  • TRUE - 如果指定元素存在于矩阵中
  • FALSE - 如果指定元素不存在于矩阵中

例如,

# 创建一个两个 2 行 3 列的矩阵
array1 <- array(c(1:12), dim = c(2,3,2))

11 %in% array1 # TRUE

13 %in% array1 # FALSE

输出

[1] TRUE
[2] FALSE

这里,

  • 11 存在于 array1 中,所以方法返回 TRUE
  • 13 不存在于 array1 中,所以方法返回 FALSE

R 中数组的长度

在 R 语言中,我们可以使用 length() 函数来找出数组内元素的数量。例如,

# 创建一个两个 2 行 3 列的矩阵
array1 <- array(c(1:12), dim = c(2,3,2))

# 使用 length() 找出 array1 的总元素数
cat("总元素数:", length(array1))

输出

总元素数: 12

这里,我们使用了 length() 来找出 array1 的长度。由于有两个 23 列的矩阵,length() 函数返回 12