R 语言向量长度警告修复


发布日期 : 2020-08-05 10:28:12 UTC

访问量: 10 次浏览

R语言如何修复:longer object length is not a multiple of shorter object length

在这篇文章中,我们将研究如何修复R编程语言中的 “较长对象长度不是较短对象长度的倍数 “错误。

这是一个由R编译器产生的警告信息。这个警告信息的完整形式在下面给出。

Warning message:
In vect1 + vect2 : 
longer object length is not a multiple of shorter object length

原因:
在R语言中,当我们试图对长度不等的向量做一些操作时,可能会出现这样的错误。

什么时候会出现这种错误

考虑到我们有两个向量 vect1vect2。两者分别包含5和4个元素。

# Define two vectors
vect1 <- c(6, 8, 12, 4, 15)
vect2 <- c(16, 27, 18, 9)

例子

现在让我们试着做减法并打印相应的数值。

# Define two vectors
vect1 <- c(6, 8, 12, 4, 15)
vect2 <- c(16, 27, 18, 9)
  
# Subtract and display result
vect1 - vect2

输出

R语言如何修复:longer object length is not a multiple of shorter object length

错误

对输出的解释

输出显示了每个向量中相应数值的差异。我们收到警告信息是因为这两个向量的长度不相等。请注意,R编译器使用vect1的最后一个元素和vect2的第一个元素之间的差值。因此,我们会说这些值是以一种非常循环的形式重复的。

当我们不知道向量的特定长度时。那么,最好是事先测试一下向量的长度。在R语言中,我们有 length() 函数,用来确定向量中存在的元素数量。

如何解决这个错误

我们必须确保我们要处理的向量的长度必须相同。例如,在上面的源代码中,vector2vect1 短一个长度。因此我们可以在 vect2 的末尾插入0。

例子

# Define two vectors
vect1 <- c(6, 8, 12, 4, 15)
vect2 <- c(16, 27, 18, 9)
  
# Insert a zero
vect2 <- c(vect2, 0)
  
# Subtract and display result
vect1 - vect2

输出

R语言如何修复:longer object length is not a multiple of shorter object length

输出

正如你在输出中看到的,这次程序编译成功,没有出现任何警告信息。

例子

这里,我们只是用R语言中的 length() 函数来打印所提供的两个向量的长度。

# Define two vectors
vect1 <- c(6, 8, 12, 4, 15)
vect2 <- c(16, 27, 18, 9)
  
# Print the length of vect1
print("length of vect1 is: ")
length(vect1)
  
# Print the length of vect2
print("length of vect2 is: ")
length(vect2)

输出

R语言如何修复:longer object length is not a multiple of shorter object length

输出

例子

如果两个向量的长度相差很大,那么我们可以使用一个 for-loop,在较短的向量的末尾加上那些许多0。

# Define two vectors
vect1 <- c(6, 8, 12, 4, 15)
vect2 <- c(16)
  
# Insert zeros to the end of vector vect2
for(i in ((length(vect2)+1):length(vect1)))
  +{vect2 = c(vect2, 0)}
  
# Subtract and display result
vect1 - vect2

输出

R语言如何修复:longer object length is not a multiple of shorter object length