如何在 r 中修复:替换长度为零


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

 Error in x[1] = x[0]: replacement has length zero

当您尝试用另一个“长度为零”(意味着该值不存在)的值替换向量中的值时,会发生此错误。

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

如何重现错误

假设我们在 R 中创建以下具有 10 个值的向量:

 data = c(1, 4, 5, 5, 7, 9, 12, 14, 15, 17)

现在假设我们尝试使用以下for()循环将向量中的每个值与其前面的值相乘:

 for (i in 1: length (data)) {
  data[i] = data[i] * data[i-1]
}

Error in data[i] <- data[i] * data[i - 1]: replacement has length zero

我们收到错误“替换长度为零”,因为在第一个循环中我们尝试执行以下乘法:

  • 数据[1] * 数据[0]

由于 R 索引从 1 开始,因此 data[0]值根本不存在。

我们可以通过尝试打印向量中位置 0 处的值来检查这一点:

 print (data[0])

numeric(0)

结果是一个长度为 0 的数字向量——换句话说,它不存在。

如何修复错误

修复此错误的方法是简单地使用for()循环,该循环不会尝试访问不存在的向量值。

在我们的示例中,我们可以通过在索引位置 2 而不是位置 1 处启动 for 循环来纠正此错误:

 for (i in 2: length (data)) {
  data[i] = data[i] * data[i-1]
}

#view updated vector
data

 [1] 1 4 20 100 700 6300 75600
 [8] 1058400 15876000 269892000

请注意,我们没有收到错误,因为我们从未尝试访问向量中不存在的索引位置。

其他资源

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

如何修复:条件长度 > 1 并且仅使用第一个元素
如何修复:替换有 X 行,数据有 Y
如何修复:二元运算符的非数字参数
如何解决:dim(X) 必须具有正长度
如何修复:选择未使用的参数时出错

添加评论

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