如何在 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
输出: