R语言如何修复:Subscript out of bounds

R语言如何修复:Subscript out of bounds

下标出界: 这是在R中可能遇到的最常见的错误之一,其形式如下。

Error in y[,6]: subscript out of bounds

原因: 当程序员试图访问一个不存在的行或列时,编译器会产生这个错误。

创建一个矩阵

让我们首先创建一个矩阵。例如,我们已经创建了一个有5行3列的矩阵 mat 。它的值是用sample.int()函数初始化的。这个函数是用来从数据集中提取随机元素的。

# Create a matrix with 5 rows and 3 columns
mat = matrix(data = sample.int(100, 30), nrow = 5, ncol = 3)
  
#print matrix
print(mat)

输出

R语言如何修复:Subscript out of bounds

输出

例1: 下标出界(以行为单位)。

下面的代码正试图访问不存在的第6行。

# Create a matrix with 5 rows and 3 columns
mat = matrix(data = sample.int(100, 30), nrow = 5, ncol = 3)
  
# Try to print the 6th row of matrix
mat[6, ]

输出

R语言如何修复:Subscript out of bounds

输出

矩阵的第6行不存在,因此我们得到了下标越界的错误。请注意,我们可以随时使用nrow()函数来检查矩阵中有多少行。

例子

# Create a matrix with 5 rows and 3 columns
mat = matrix(data = sample.int(100, 30), nrow = 5, ncol = 3)
  
# Print the number of rows in matrix
nrow(mat)

输出

R语言如何修复:Subscript out of bounds

输出

矩阵中只有5行。因此,我们可以访问小于或等于5的列。现在让我们尝试访问第3列。

# Create a matrix with 5 rows and 3 columns
mat = matrix(data = sample.int(100, 30), nrow = 5, ncol = 3)
  
# Try to print the 5th row of the matrix
mat[5,]

输出

R语言如何修复:Subscript out of bounds

输出

例2: 下标出界(在列中)

下面的代码正试图访问不存在的第4列。

# Create a matrix with 5 rows and 3 columns
mat = matrix(data = sample.int(100, 30), nrow = 5, ncol = 3)
  
# Try to print the 4th column of the matrix
mat[, 4]

输出

R语言如何修复:Subscript out of bounds

输出

矩阵的第4列并不存在,因此我们得到了下标越界的错误。请注意,我们可以随时使用ncol()函数来检查矩阵中有多少列。

例子

# Create a matrix with 5 rows and 3 columns
mat = matrix(data = sample.int(100, 30), nrow = 5, ncol = 3)
  
# Print the number of columns in the matrix
ncol(mat)

输出

R语言如何修复:Subscript out of bounds

输出

矩阵中只有3列。因此,我们可以访问小于或等于3的列。 现在,让我们尝试访问第3列。

例子

# Create a matrix with 5 rows and 3 columns
mat = matrix(data = sample.int(100, 30), nrow = 5, ncol = 3)
  
# Try to print the 3th column of the matrix
mat[, 3]

输出

R语言如何修复:Subscript out of bounds

输出

例3: 下标出界(包括行和列)。

下面的代码正试图访问第6行和第4列。

# Create a matrix with 5 rows and 3 columns
mat = matrix(data = sample.int(100, 30), nrow = 5, ncol = 3)
  
# Try to print the 6th row and the 4th column
# of the matrix
mat[6, 4]

输出

R语言如何修复:Subscript out of bounds

输出

矩阵的第6行和第4列不存在,因此我们得到下标越界的错误。请注意,我们可以随时使用dim()函数来检查矩阵中有多少行和多少列。

# Create a matrix with 5 rows and 3 columns
mat = matrix(data = sample.int(100, 30), nrow = 5, ncol = 3)
  
# Print the number of rows and columns in the matrix
dim(mat)

输出

R语言如何修复:Subscript out of bounds

输出

矩阵中只有5行和3列。因此,我们可以访问小于或等于5的行和小于或等于3的列。现在让我们尝试访问存储在第5行和第3列的值。

# Create a matrix with 5 rows and 3 columns
mat = matrix(data = sample.int(100, 30), nrow = 5, ncol = 3)
  
# Print the number of rows and columns 
# in the matrix
mat[5,3]

输出

R语言如何修复:Subscript out of bounds

输出

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程