R语言如何修复:dim(X) must have a positive length
在这篇文章中,我们重点讨论如何在R编程语言中修复 “dim(X)必须有正长度 “的错误。
dim(X)必须有一个正的长度。
这是由R编译器抛出的一种错误。R编译器产生的错误形式为。
apply(dataframe$column_header1, numeric_value, mean) 中的错误。
dim(X)必须有一个正的长度
当我们使用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))
# Print data frame
dataframe
输出
现在考虑我们要用apply()函数来计算 “mark “列的平均值。
例子
在这个例子中,R编译器产生了这个错误,因为apply()函数只能应用于数据框或矩阵,但这里我们是在一个特定的列上使用它。
# 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()函数中明确指定列的名称。
# 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中的mean()函数而不是apply()函数。
# 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)
输出
输出
例子
假设我们想计算 “业绩 “栏的平均值。
# 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)
输出
输出
例2
在这个例子中,我们将创建一个数据框架,并找到每一列的乘积
print("GeeksforGeeks")
# Create a data frame
dataframe <- data.frame(A=c(5, 6, 7, 5, 6, 9),B= c(6, 4, 3, 4, 2, 6),C= c(1, 2, 3, 7, 8, 9)
)
#creating a product function
product = function(x, output){
# accessing elements from first column
A = x[1]
# accessing elements from second column
B=x[2]
# accessing elements from third column
C= x[3]
# return product
return(A*B*C)
}
cbind(dataframe,product = apply(dataframe$B,1,product))
输出
现在,让我们试着修复它。
print("GeeksforGeeks")
# Create a data frame
dataframe <- data.frame(A=c(5, 6, 7, 5, 6, 9),B= c(6, 4, 3, 4, 2, 6),C= c(1, 2, 3, 7, 8, 9)
)
#creating a product function
product = function(x, output){
# accessing elements from first column
A = x[1]
# accessing elements from second column
B=x[2]
# accessing elements from third column
C= x[3]
# return product
return(A*B*C)
}
cbind(dataframe,product = apply(dataframe,1,product))
输出