📜  如何在 R 中修复:参数暗示不同的行数

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

如何在 R 中修复:参数暗示不同的行数

在本文中,我们将看到如何修复在 R 编程语言中暗示不同行数的参数。

我们在 R 中可能遇到的一个错误是:

当我们尝试创建数据框并且数据框每列中的行数彼此不同时,编译器会产生这样的错误。

何时可能发生此错误

让我们尝试使用四个向量在 R 中创建一个数据框。

R
# Define vectors
data1 <- c(4, 8, 13, 14, 15, 18)
data2 <- c(2, 4, 5, 17, 15)
data3 <- c(10, 21, 22, 7, 4, 6)
data4 <- c(43, 23, 27, 87, 34, 16)
  
# Try to create data frame with vectors 
# as columns
df <- data.frame(data1=data1, data2=data2,
                 data3=data3, data4=data4)


R
# Define vectors
data1 <- c(4, 8, 13, 14, 15, 18)
data2 <- c(2, 4, 5, 17, 15)
data3 <- c(10, 21, 22, 7, 4, 6)
data4 <- c(43, 23, 27, 87, 34, 16)
  
# Print the length
length(data1)
length(data2)
length(data3)
length(data4)


R
# Define vectors
data1 <- c(4, 8, 13, 14, 15, 18)
data2 <- c(2, 4, 5, 17, 15)
data3 <- c(10, 21, 22, 7, 4, 6)
data4 <- c(43, 23, 27, 87, 34, 16)
  
# Configure the shortest vector with NA's
# to have same length as longest vector
length(data2) <- length(data1)
  
# Try to create data frame with vectors
# as columns
df <- data.frame(data1=data1, data2=data2, 
                 data3=data3, data4=data4)


输出:

编译器会产生这样的错误,因为使用的向量的长度不同。因此,列中的行数不相同。我们还可以通过打印向量的长度来交叉检查这一点。

R

# Define vectors
data1 <- c(4, 8, 13, 14, 15, 18)
data2 <- c(2, 4, 5, 17, 15)
data3 <- c(10, 21, 22, 7, 4, 6)
data4 <- c(43, 23, 27, 87, 34, 16)
  
# Print the length
length(data1)
length(data2)
length(data3)
length(data4)

输出:

正如我们在输出中看到的那样,data1、data3、data4 的长度等于 6,但 data2 的长度等于 5。

如何修复错误?

通过记住每个向量必须具有样本长度,以便最终数据帧中的每一列都具有行数,可以轻松修复此错误。例如,我们可以用 NA 值填充最短向量,以便每个向量具有相同的长度:

R

# Define vectors
data1 <- c(4, 8, 13, 14, 15, 18)
data2 <- c(2, 4, 5, 17, 15)
data3 <- c(10, 21, 22, 7, 4, 6)
data4 <- c(43, 23, 27, 87, 34, 16)
  
# Configure the shortest vector with NA's
# to have same length as longest vector
length(data2) <- length(data1)
  
# Try to create data frame with vectors
# as columns
df <- data.frame(data1=data1, data2=data2, 
                 data3=data3, data4=data4)

输出:

这次程序编译成功,因为每一列在数据框中的行数相同。