如何在 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 个或更多级别的因子