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)
输出
输出
例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, ]
输出
输出
矩阵的第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)
输出
输出
矩阵中只有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,]
输出
输出
例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]
输出
输出
矩阵的第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)
输出
输出
矩阵中只有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]
输出
输出
例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]
输出
输出
矩阵的第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)
输出
输出
矩阵中只有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]
输出
输出