R中的数组用法完全剖析

本文概述

  • 创建数组
  • 数组索引
  • 矩阵创建和添加
  • apply()
  • 本文总结
数组是可以保存多维数据的数据结构。在R中, 数组是可以保存二维或更多二维数据的对象。例如, 在正方形矩阵中可以包含两行两列, 维度可以为五。数组可以存储仅具有相似类型数据类型的值。数据可以是一维以上的数据, 其中存在行和列, 并且维的长度是一定的。
创建数组array()函数将创建一个采用向量的数组, 该向量是参数中的数字和维数(‘ dim’ )。
我们来看下面的示例, 其中创建了两个名为” array1″ 和” array2″ 的向量。
vector1 =c (5, 10, 15, 20) vector2 =c (25, 30, 35, 40, 45, 50, 55, 60)

你可以将上面的两个向量作为数组的输入, 其中维被视为4 * 4, 并创建了两个矩阵或维数据。
final = array (c (array1, array2), dim =c(4, 4, 3)) print (final)

上面代码的输出如下:
, , 1[, 1] [, 2] [, 3] [, 4] [1, ]525455 [2, ]10305010 [3, ]15355515 [4, ]20406020, , 2[, 1] [, 2] [, 3] [, 4] [1, ]2545525 [2, ]30501030 [3, ]35551535 [4, ]40602040, , 3[, 1] [, 2] [, 3] [, 4] [1, ]4552545 [2, ]50103050 [3, ]55153555 [4, ]60204060

让我们使用” matrix.names” 将数组重命名为” Arr1″ 和” Arr2″ 。此外, 将行名更改为(” row1″ , ” row2″ ), 将列名更改为(” column1″ , ” column2 “ , ” column3″ )。矩阵的尺寸为2行和3列。
array1 =c (9 , 18 ) array2 = c (27, 36) r.names = c ("column1", "column2", "column3") c.names = c ("row1", "row2") m.names = c ("Arr1", "Arr2")final = array (c (array1, array2), dim=c (2, 3, 2), dimnames=list (c.names, r.names, m.names)) print(final)

上面的代码输出如下, 其中有两行三列。同样, 一旦完成, 列中的值就会重复:
, , Arr1column1 column2 column3 row19279 row2183618, , Arr2column1 column2 column3 row127927 row2361836

数组索引数组由多维方式的元素组成, 可以为操作访问每个元素。可以使用'[]’ 对元素进行索引, 其中类似数组的矩阵由行和列组成, 可以通过以下方式对它们进行索引:mat [row, column]
让我们以下面的示例为例, 其中数组包含从1到9的向量输入。只有三行和列包含从1到9的值.’ c.names)’ 是具有向量的新列名( ” c1″ , ” c2″ , ” c3″ )和” r.names” 是新的行名(” r1″ , ” r2″ , ” r3″ ), 也是向量。
a1=c (1, 2, 3, 4) a2= c (5, 6, 7, 8, 9) r.names = c ("c1", "c2", "c3") c.names = c ("r1", "r2", "r3") m.names = c ("first")arr = array (c (a1, a2), dim=c (3, 3, 1), dimnames=list (c.names, r.names, m.names)) print(arr)

, , firstc1 c2 c3 r1147 r2258 r3369

上面的代码输出如下:
, , firstc1 c2 c3 r1147 r2258 r3369

你可以看到从1到9的矩阵是使用3 3维(行列)格式生成的, 并且行和列的名称已更改。
让我们看看如何通过以下示例提取数组中的元素。
  1. 让我们从上面的数组” arr” 中提取数字” 7″ 。
arr[1, 3, 1]

7
上面代码的输出是7。在” arr [1, 3, 1]” 行的第3列和第1行中, 提取了第一个数组” arr” 。
  1. 要访问1, 则从第1列和第1列的” arr [1, 1, 1]” 行1中提取第一个数组” arr” 。
arr[1, 1, 1]

1个
上面代码的输出为1。
  1. 要一次访问多个值, 你需要指定所需的范围。
arr[1:2, 1:2, 1]

c1 c2
11 1 4
22 2 5
上面的代码给出如下输出, 其中提取包含2行, 2列和1的值是第一个数组’ arr’ :
c1c2 r114 r225

  1. 你可以使用以下语法访问整个数组’ arr’ , 其中’ arr [, , 1]’ 指定包含所有行和列, 每个行和列均以逗号分隔, 并用空格表示。 1指定要提取的数组” arr” 。
arr[ , , 1]

c1 c2 c3
11 1 4 7
22 2 5 8
33 3 6 9
上面的代码给出了以下所有元素存在的输出:
c1c2c3 r1147 r2258 r3369

  1. 你可以通过以下代码获得整个第二行, 其中arr [2, , 1]获取带有空格的第二行, 而1是要提取的” arr” 。
arr[2, , 1]

  • c1
  • 2
  • c2
  • 5
  • c3
  • 8
上面的代码给出以下输出, 并打印c1, c2, c3。
c1 2 c2 5 c3 8

  1. 你可以通过以下代码获得整个第二列, 其中arr [, 2, 1]空格, 第二列是2, 而1是要提取的” arr” 。
mat[ , 2, 1]

  • 11
  • 4
  • 22
  • 5
  • 33
  • 6
上面的代码给出以下输出, 并显示r1, r2, r3。
r1 4 r2 5 r3 6

矩阵创建和添加让我们从’ arr [, , 1]’ 创建一个名为mat1和mat2的矩阵, 在其中复制’ arr’ 中的所有行和列。
mat1 = arr[, , 1] mat2 = arr[, , 1]

c1 c2 c3 r128 14 r24 10 16 r36 12 18

添加两个矩阵’ mat1’ 和’ mat2’ 并将结果存储在final中。输出也会被打印。
final < - mat1+mat2 print(final)

下面的输出显示mat1和mat2的每一行和每一列都被添加到彼此。
c1 c2 c3 r128 14 r24 10 16 r36 12 18

apply()” apply()” 是R软件包之一, 它具有几个功能, 可帮助以更轻松有效的方式编写代码。你将在以下示例中看到该示例, 该示例可用于计算两个不同数组的总和。
apply()的语法为:
apply(x, margin, function)
上面的参数表明:
x:作为矩阵的数组或二维数据。
margin:表示要用作边距值的函数, 行的c(1), 列的c(2), 行和列的c(1, 2)。
function:指示要在给定数据上应用的R内置或用户定义的函数。
让我们使用以下代码创建一个长度为三的名为” array1″ 和长度为六的” array2″ 的向量。
array1 = c(5, 10, 15) array2 = c(15, 20, 25, 30, 35, 40)

你可以在下面看到’ array()’ 接受两个名为’ array1’ 和’ array2’ 的向量, 并创建了3行, 3列和2个矩阵的维并将其存储到’ my。阵列” 。
my.Array < - array(c(array1, array2), dim = c(3, 3, 2)) print(my.Array)

, , 1[, 1] [, 2] [, 3] [1, ]51530 [2, ]102035 [3, ]152540, , 2[, 1] [, 2] [, 3] [1, ]51530 [2, ]102035 [3, ]152540

上面的代码提供以下输出, 其中使用3 3(行列)创建两个矩阵。
, , 1[, 1] [, 2] [, 3] [1, ]51530 [2, ]102035 [3, ]152540, , 2[, 1] [, 2] [, 3] [1, ]51530 [2, ]102035 [3, ]152540

下面使用’ apply()’ 来按列计算两个矩阵的总和。
final < - apply(my.Array, c(2), sum) print(final)

[1]60 120 210

你可以在上面看到在’ my。’ 中矩阵的元素使用空白的c(2)的地方。将Array’ 按列进行求和以得到以下输出。
60 120 210

最后, 下面使用” apply()” 按行计算两个矩阵的总和。
final < - apply(my.Array, c(1), sum) print(final)

[1] 100 130 160

你可以在上面看到在’ my。’ 中矩阵的元素使用c(1)边距的地方。按行将Array’ 相加得出以下输出。
100 130 160

本文总结恭喜, 你已完成本教程的结尾!
你已经了解了R的数组及其创建, 使用示例在数组中建立索引, 矩阵的创建和添加以及apply()函数的知识。
如果你想了解有关R的更多信息, 请参加srcmini的R入门课程。
参考文献:
R数组
【R中的数组用法完全剖析】R数组函数和在R中创建数组

    推荐阅读