R语言 数组
数组是由固定数量的维度定义的基本数据存储结构。数组用于在连续的内存位置分配空间。一维数组被称为向量,长度是其唯一的维度。二维数组被称为矩阵,由固定数量的行和列组成。数组由相同数据类型的所有元素组成。向量被作为输入提供给函数,然后根据维数创建一个数组。
创建一个数组
R中的数组可以通过使用 array() 函数来创建。列表中的元素与所需的维度一起被传递给array()函数。
语法
其中 。
nrow : 行的数量
ncol : 列的数量
nmat :nrow * ncol
的矩阵数量
dimnames : 默认值 = NULL。
否则,必须指定一个列表,其中有一个维度的每个组件的名称。每个分量要么是空的,要么是一个长度等于该维度的dim值的向量。
单维数组
矢量是一个单维数组,它由一个单一的维度,即长度指定。一个向量可以通过 ‘c() ‘函数来创建。一个值的列表被传递给c()函数来创建一个向量。
例子
输出
多维数组
二维矩阵是一个由固定数量的行和列指定的数组,每个行和列包含相同的数据类型。矩阵是通过使用 array() 函数创建的,其数值和维度被传递给该函数。
例子
输出
不同长度的向量也可以作为输入送入 array() 函数。但是,所有向量的元素总数应等于矩阵的元素数。这些元素按照函数中指定的顺序排列。
示例 。
输出
数组的命名
行名、列名和矩阵名分别被指定为行数、列数和矩阵数的向量。默认情况下,行、列和矩阵是以其索引值命名的。
输出
访问数组
可以通过使用由逗号分隔的不同维度的索引来访问数组。不同的组件可以通过元素的名称或位置的任何组合来指定。
访问一维数组
可以通过使用相应元素的索引来访问这些元素。
**< 输出 **
访问整个矩阵
输出
访问矩阵的特定行和列
行和列也可以通过名称和索引来访问。
输出
单独访问元素
可以通过使用行和列的编号或名称来访问元素。
输出
访问数组元素的子集
通过定义行或列的限制范围,可以访问数组元素的一个较小的子集。
输出
向数组添加元素
元素可以被添加到数组中的不同位置。元素的顺序是按照它们被添加到数组中的顺序保留的。添加新元素所需的时间复杂度是O(n),其中n是数组的长度。数组的长度随着元素添加的数量而增加。在R中,有各种内置的函数可以用来添加新的值。
- c(vector, values): c()函数允许我们将数值追加到数组的末端。多个值也可以加在一起。
- append(vector, values):该方法允许在向量的任何位置追加数值。默认情况下,这个函数将元素加在最后。
append(vector, values, after=length(vector))在函数的最后一个参数中指定的数组长度之后添加新的值。
- 使用数组的长度函数:
可以在length+x索引处添加元素,其中x>0。
**输出: **
数组的原始长度是7,在第三次修改后,元素一直存在到第8个索引值。现在,在第四次修改时,当我们在第10个索引值处添加元素9时,R的内置函数自动在缺失的值位置添加NA。
在第五次修改时,从第11个索引值开始添加数组中的元素[10, 11, 12]
。
在第6次修改时,数组[-1,-1]
被附加在数组的第三个位置之后。
从数组中移除元素
在R语言中,可以从数组中移除元素,可以一次移除一个,也可以多个一起移除。这些元素被指定为数组的索引,其中满足条件的数组值被保留,其余被移除。删除的比较是基于数组的值。多个条件也可以结合在一起,以删除一个范围的元素。另一种移除元素的方法是使用 %in% 操作符,其中属于操作符的TRUE值的元素值集合被显示为结果,其余的被移除。
输出
在第一次修改时,所有不等于3的元素值被保留。在第2次修改时,保留2到8之间的元素范围,其余的被删除。在第3次修改时,满足FALSE值的元素被打印出来,因为该条件涉及到NOT操作符。
更新数组中现有的元素
数组中的元素可以用新的值进行更新,方法是将数组中所需要的索引与修改后的值进行分配。这些变化会保留在原始数组中。如果要更新的索引值在数组的长度范围内,那么该值将被改变,否则,新的元素将被添加到指定的索引处。多个元素也可以同时被更新,可以是同一个元素的值,也可以是多个值,如果新值被指定为一个向量的话。
输出
在第2次修改时,索引7至9的元素分别被更新为-1。在第3次修改时,第2个元素被替换为-1,第5个元素被替换为-2。在第4次修改时,由于第10个索引大于数组的长度,一个新的元素被添加。