📜  如何在 R 中修复:较长的对象长度不是较短对象长度的倍数

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

如何在 R 中修复:较长的对象长度不是较短对象长度的倍数

在本文中,我们将研究解决 R 编程语言中“较长对象长度不是较短对象长度的倍数”错误的方法。

这是 R 编译器生成的警告消息。此警告消息的完整形式如下:

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

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

何时可能发生此错误:

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

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


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


R
# 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
# 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
# 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

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

输出:

错误

输出解释:

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

当我们不知道向量的特定长度时。然后,建议事先测试向量的长度。在 R 中,我们有用于确定向量中存在的元素数量的 length()函数。

如何修复此错误:

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

例子:

R

# 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 中的 length()函数提供的两个向量的长度。

R

# 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)

输出:

输出

例子:

如果向量的长度差异很大,那么我们可以使用 for 循环并在较短向量的末尾添加许多 0。

R

# 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

输出:

输出