📜  如何在 R 中修复:替换的长度为零

📅  最后修改于: 2022-05-13 01:55:09.131000             🧑  作者: Mango

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

在本文中,我们将讨论如何修复 R 编程语言中替换长度为零的错误。

替换的长度为零:

R 编译器会产生这样的错误。通常,此错误采用以下形式:

Error in vect[0] : replacement has length zero

当程序员试图用其他值替换向量中的值但其他值的长度为零时,编译器会产生此错误,这意味着其他值不存在。

何时可能发生此错误:

考虑一个示例,其中我们有一个用 5 个五个值初始化的向量。

R
# Initializing a vector
vect = c(5, 8, 4, 12, 15)


R
# Initializing a vector
vect = c(5, 8, 4, 12, 15)
  
# Iterate over the vector
for (i in 1 : length(vect)) {
    
  # Assign sum
  vect[i] = vect[i] + vect[i - 1]
}


R
# Print the value stored at the index 0
print(vect[0]


R
# Initializing a vector
vect = c(5, 8, 4, 12, 15)
  
# Iterate over the vector
for (i in 2 : length(vect)) {
    
      # Assign sum
    vect[i] = vect[i] + vect[i - 1]
      
    # Print the value
    print(vect[i])
}


现在假设我们想要迭代向量,并且在迭代的每一步我们想要分配当前值和存储在当前位置的前一个位置的值的总和。

R

# Initializing a vector
vect = c(5, 8, 4, 12, 15)
  
# Iterate over the vector
for (i in 1 : length(vect)) {
    
  # Assign sum
  vect[i] = vect[i] + vect[i - 1]
}

输出:

输出

由于以下情况,R 编译器会产生此错误:

vect[1] = vect[1] + vect[0]

这是因为 R 中的索引从 1 开始。因此,vect[0] 不存在。

我们可以通过简单地打印值来确认 vect[0] 不存在:

例子:

R

# Print the value stored at the index 0
print(vect[0]

输出:

输出

输出是一个长度为零的数字向量。

修复错误:

我们可以通过简单地处理可能访问迭代期间不存在的值的情况来修复此错误。

例子:

R

# Initializing a vector
vect = c(5, 8, 4, 12, 15)
  
# Iterate over the vector
for (i in 2 : length(vect)) {
    
      # Assign sum
    vect[i] = vect[i] + vect[i - 1]
      
    # Print the value
    print(vect[i])
}

输出:

输出