【发布时间】:2014-05-29 10:02:25
【问题描述】:
代码如下:
data_complete<-read.delim("D:/Work/output_java_head.txt") #complete data set #working
modelfn<-function(data_complete){
model<-lm(mctr~price+age_group+gender+brand+product_typeid+google_product_category,data=data_complete)
data_complete$predicted<-predict(model,data_complete)
return(data_complete$predicted)
sink()
write.csv("D:/Work/output",i,".csv")
rm(model)
gc(TRUE)
} #working
然后使用这个命令:
by(data_complete,data_complete$google_product_category,modelfn)
我收到了这个错误:
contrasts<-(*tmp*, value = contr.funs[1 + isOF[nn]]) 中的错误: 对比只能应用于具有 2 个或更多级别的因素
请注意data_complete$google_product_category 有 117 个级别,data_complete 共有 22 列。
我也用于测试:
by(data_complete,data_complete$google_product_category,summary)
它给了我正确的答案。
所以我猜我创建的函数modelfn有问题。
【问题讨论】:
-
非常简单的错误:你有一个只有级别的变量。我想这可能是由于缺失,但不看数据就不可能知道。
-
@Thomas 正如我上面提到的,我正在对其建模的变量有 117 个级别,我已经在 R 控制台中使用“级别”和“摘要”对其进行了测试。至于数据部分,我不能分享它,因为它是机密的。但我可以告诉你,数据已经彻底清理和测试过好几次了。
标签: r