如何在 r 中修复:索引越界


在 R 中您可能遇到的一个常见错误是:

 Error in x[, 4]: subscript out of bounds

当您尝试访问不存在的矩阵的列或行时,会发生此错误。

本教程使用以下矩阵作为示例,展示了解决此错误可以采取的确切步骤:

 #make this example reproducible
set. seeds (0)

#create matrix with 10 rows and 3 columns
x = matrix(data = sample. int (100, 30), nrow = 10, ncol = 3)

#print matrix
print (x)

      [,1] [,2] [,3]
 [1,] 14 51 96
 [2,] 68 85 44
 [3,] 39 21 33
 [4,] 1 54 35
 [5,] 34 74 70
 [6,] 87 7 86
 [7,] 43 73 42
 [8,] 100 79 38
 [9,] 82 37 20
[10,] 59 92 28

示例#1:索引超出范围(带行)

以下代码尝试访问矩阵的第 11 行,但该行不存在:

 #attempt to display 11th row of matrix
x[11, ]

Error in x[11, ]: subscript out of bounds

由于矩阵的第 11 行不存在,因此我们得到索引越界错误。

如果我们不知道矩阵中有多少行,可以使用nrow()函数来查找:

 #display number of rows in matrix
nrow(x)

[1] 10

我们可以看到矩阵只有 10 行。因此,我们只能使用小于或等于 10 的数字来访问行。

例如,我们可以使用以下语法来显示矩阵的第 10 行:

 #display 10th row of matrix
x[10, ]

[1] 59 92 28

示例#2:索引超出范围(包含列)

以下代码尝试访问矩阵的第 4 列,但该列不存在:

 #attempt to display 4th column of matrix
x[, 4]

Error in x[, 4]: subscript out of bounds

由于矩阵的第 4 列不存在,因此我们得到索引越界错误。

如果我们不知道矩阵包含多少列,可以使用ncol()函数来查找:

 #display number of columns in matrix
ncol(x)

[1] 3

我们看到矩阵中只有 3 列。因此,我们只能使用小于或等于 3 的数字来访问列。

例如,我们可以使用以下语法来显示矩阵的第三列:

 #display 3rd column of matrix
x[, 3]

[1] 96 44 33 35 70 86 42 38 20 28

示例#3:索引超出范围(行和列)

以下代码尝试访问矩阵第 11 行第 4 列的值,该值不存在:

 #attempt to display value in 11th row and 4th column
x[11, 4]

Error in x[11, 4]: subscript out of bounds

由于矩阵的第 11 行和第 4 列都不存在,因此我们得到索引越界错误。

如果我们不知道矩阵有多少行和列,我们可以使用dim()函数来查找:

 #display number of rows and columns in matrix
dim(x)

[1] 10 3

我们看到矩阵只有 10 行 3 列。所以,我们在访问行和列时只能使用小于或等于这些值的数字。

例如,我们可以使用以下语法来显示矩阵第10行第3列的值:

 #display value in 10th row and 3rd column of matrix
x[10, 3]

[1] 28

其他资源

以下教程解释了如何解决 R 中的其他常见错误:

如何在 R 中修复:名称与以前的名称不匹配
如何在 R 中修复:较长物体的长度不是较短物体长度的倍数
如何在 R 中修复:对比只能应用于具有 2 个或更多级别的因子

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注