使用函数均值[R]时出现“参数不是数字或逻辑:返回NA”错误

时间:2018-07-20 17:01:09

标签: r dataframe vector

我使用Ames data set创建了以下代码:

NbrMLR <- lm(SalePrice ~ Neighborhood, data = ames_housing_data)
pred <- as.data.frame(predict(NbrMLR, ames_housing_data))
library(reshape)
pred <- rename(pred,c('predict(NbrMLR, ames_housing_data)' = 'prd'))
ames_housing_data$NbrPred <- pred
ames_housing_data$NbrRes <- SalePrice - ames_housing_data$NbrPred
ames_housing_data$absoluteNbrRes <- abs(ames_housing_data$NbrRes)
NbrMAE <- mean(ames_housing_data$absoluteNbrRes)

此代码导致以下错误:

  

参数不是数字或逻辑:返回NA

str(ames_housing_data$absoluteNbrRes)告诉我我有一个变量类型为$ prd: num的数据框。尽管我熟悉num,但之前从未听说过prd: num。这会引起问题吗?为什么mean()不按照我认为是有效的向量行事?

1 个答案:

答案 0 :(得分:1)

ames_housing_data$NbrPred <- pred[[1]]将对其进行修复。

关于您的错误:prd是一个变量名(如您所定义!)。您将数据帧传递到mean,这会导致您出错。


如果我是你,我会写以下代码:

NbrMLR <- lm(SalePrice ~ Neighborhood, data = ames_housing_data)
ames_housing_data$NbrPred <- predict(NbrMLR, ames_housing_data)
ames_housing_data$NbrRes <- SalePrice - ames_housing_data$NbrPred
ames_housing_data$absoluteNbrRes <- abs(ames_housing_data$NbrRes)
NbrMAE <- mean(ames_housing_data$absoluteNbrRes)