我正在使用randomForest
包来使用标准流程对二进制结果变量进行分类。我首先必须强制更改所有变量以确保它们是数字,然后使用na.roughfix
来处理缺失值:
data <- read.csv("data.csv")
data <- lapply(data, as.numeric)
data <- na.roughfix(data)
然后我运行模型:
model <- randomForest(as.factor(outcome) ~ V1 + V2...+ VN,
data=data,
importance=TRUE,
ntree=500)
我收到以下错误:
na.fail.default中的错误(列表(as.factor(结果)= c(2L,2L,1L,: 对象中缺少值
na.roughfix估算应该已经解决了这个问题(我之前已经开始工作了research on here shows that it should work),对吧?有什么建议?
答案 0 :(得分:5)
您的lapply
行并没有达到您的预期。结果不再是数据框,只是一个列表。因此,data.frame
的{{1}}方法不会被调度,只是默认方法只返回它的第一个参数,如果它不是原子的(你的列表)显然不是。
将每列转换为数字但保留数据框属性的有点偷偷摸摸的方法是:
na.roughfix
或者,您只需通过data[] <- lapply(data,as.numeric)
将其转换回来。