📜  如何在 R 中修复:dim(X) 必须具有正长度

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

如何在 R 中修复:dim(X) 必须具有正长度

在本文中,我们将重点介绍如何修复 R 编程语言中的“dim(X) 必须具有正长度”错误。

dim(X) 必须具有正长度:

这是 R 编译器抛出的一种错误。 R 编译器产生以下形式的错误:

当我们使用 apply()函数为数据帧的列计算某个值时,R 编译器会产生这样的错误,但不是数据帧,而是向量作为参数传递。

何时可能发生此错误:

让我们首先创建一个包含三列的数据框:

例子:

R
# Create a data frame
dataframe <- data.frame(score=c(91, 92, 87, 80, 79),
                 marks=c(97, 90, 81, 88, 89),
                 performance=c(80, 97, 86, 57, 88))
  
# Print data frame
dataframe


R
# Create a data frame
dataframe <- data.frame(score=c(91, 92, 87, 80, 79),
                 marks=c(97, 90, 81, 88, 89),
                 performance=c(80, 97, 86, 57, 88))
  
  
# Try to calculate mean of 'points' column
apply(dataframe$marks, 2, mean)


R
# Create a data frame
dataframe <- data.frame(score=c(91, 92, 87, 80, 79),
                 marks=c(97, 90, 81, 88, 89),
                 performance=c(80, 97, 86, 57, 88))
  
# Try to calculate mean of 'points' column
apply(dataframe, 2, mean)


R
# Create a data frame
dataframe <- data.frame(score=c(91, 92, 87, 80, 79),
                 marks=c(97, 90, 81, 88, 89),
                 performance=c(80, 97, 86, 57, 88))
  
# Compute the mean of 'score' and 'marks' 
# columns of the data frame
apply(dataframe[c('score', 'marks')], 2, mean)


R
# Create a data frame
dataframe <- data.frame(score=c(91, 92, 87, 80, 79),
                 marks=c(97, 90, 81, 88, 89),
                 performance=c(80, 97, 86, 57, 88))
  
# Compute the mean of 'performance' column
mean(dataframe$performance)


输出:

现在考虑我们要使用 apply()函数来计算“marks”列的平均值:

例子:

在此示例中,R 编译器会产生此错误,因为 apply()函数只能应用于数据框或矩阵,但这里我们在特定列上使用它。

R

# Create a data frame
dataframe <- data.frame(score=c(91, 92, 87, 80, 79),
                 marks=c(97, 90, 81, 88, 89),
                 performance=c(80, 97, 86, 57, 88))
  
  
# Try to calculate mean of 'points' column
apply(dataframe$marks, 2, mean)

输出:

如何修复错误:

我们可以通过简单地将数据框的名称传递给 apply()函数而不是传递特定列来修复此错误。

例子:

此示例编译成功。输出代表每列的平均值。要计算所选列的平均值,我们可以在 apply()函数中明确指定列名。

R

# Create a data frame
dataframe <- data.frame(score=c(91, 92, 87, 80, 79),
                 marks=c(97, 90, 81, 88, 89),
                 performance=c(80, 97, 86, 57, 88))
  
# Try to calculate mean of 'points' column
apply(dataframe, 2, mean)

输出:

输出

例子:

在这个例子中,如果我们想确定单个列的平均值,那么我们可以使用 mean()函数而不是 R 中的 apply()函数。

R

# Create a data frame
dataframe <- data.frame(score=c(91, 92, 87, 80, 79),
                 marks=c(97, 90, 81, 88, 89),
                 performance=c(80, 97, 86, 57, 88))
  
# Compute the mean of 'score' and 'marks' 
# columns of the data frame
apply(dataframe[c('score', 'marks')], 2, mean)

输出:

输出

例子:

假设我们要计算“性能”列的平均值。

R

# Create a data frame
dataframe <- data.frame(score=c(91, 92, 87, 80, 79),
                 marks=c(97, 90, 81, 88, 89),
                 performance=c(80, 97, 86, 57, 88))
  
# Compute the mean of 'performance' column
mean(dataframe$performance)

输出:

输出