如何在 R 中修复:dim(X) 必须具有正长度
在本文中,我们将重点介绍如何修复 R 编程语言中的“dim(X) 必须具有正长度”错误。
dim(X) 必须具有正长度:
这是 R 编译器抛出的一种错误。 R 编译器产生以下形式的错误:
Error in apply(dataframe$column_header1, numeric_value, mean) :
dim(X) must have a positive length
当我们使用 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)
输出: