如何在 r 中修复:矩阵上的索引数量不正确


在 R 中您可能遇到的错误是:

 Error in x[i, ] <- 0: incorrect number of subscripts on matrix

当您尝试将值分配给向量中的某个位置,但意外地包含逗号时,就会发生此错误,就像您将值分配给矩阵中的行和列位置一样。

本教程准确解释了如何修复此错误。

示例 1:修复单个值的错误

假设 R 中有以下具有 5 个值的向量:

 #definevector
x <- c(4, 6, 7, 7, 15)

现在假设我们尝试将值“22”分配给向量的第三个元素:

 #attempt to assign the value '22' to element in third position
x[3, ] <- 22

Error in x[3, ] <- 22: incorrect number of subscripts on matrix

我们收到错误,因为我们在尝试分配新值时包含了逗号。

相反,我们只需要删除命令:

 assign the value '22' to element in third position
x[3] <- 22

#display updated vector
x

[1] 4 6 22 7 15

示例 2:纠正 for 循环中的错误

当尝试使用“for”循环替换向量中的多个值时,也可能会发生此错误。

例如,以下代码尝试将向量中的每个值替换为零:

 #definevector
x <- c(4, 6, 7, 7, 15)

#attempt to replace every value in vector with zero
for (i in 1:length(x)) {
    x[i, ]=0
  }

Error in x[i, ] = 0: incorrect number of subscripts on matrix

我们收到错误,因为我们在尝试分配零时包含了逗号。

相反,我们只需要删除命令:

 #definevector
x <- c(4, 6, 7, 7, 15)

#replace every value in vector with zero
for (i in 1:length(x)) {
    x[i]=0
  }

#view updated vector
x

[1] 0 0 0 0 0

删除逗号后,代码运行不会出现错误。

其他资源

如何在 R 中修复:强制引入的 NA
如何在 R 中修复:索引越界
如何修复 R 中的错误:维数不正确

添加评论

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