我想在R中使用随机森林方法。我需要读取一个txt文件(训练集)。阅读表和R中的随机森林
dataset<- read.table(path1,header=TRUE,sep=",")
列名是数字(即1005_at),所以它们自动转换,加上X,R(即X1005_at)。为了解决这个问题,我做的事:
colnames(dataset)<-gsub("^[X](.*)","\\1",colnames(dataset))
现在的名称是好的,但是当我运行随机森林:
model.rf <- randomForest(class ~ ., data=dataset, importance=TRUE,keep.forest=T, ntree=5, do.trace=T)
我有这样的错误:
Error in eval(expr, envir, enclos) : object '1005_at' not found
虽然如果我在原始数据集上运行随机森林(不修改名称,所以使用X1005_at),则不会发生此错误。为什么?我该如何解决它?
我不能肯定地说,但我估计它有一个事实,即'randomForest'正在评估一个公式组合列的非标名的人。我敢肯定,如果你看看代码,'.'会翻译成某个地方的替代语句(或等价物),这可能是'dataset'列的**名称列表**。该函数很可能不会为非标准名称进行分配(不需要为什么它应该,因为它具有对用户的期望),因此错误 – 2013-05-14 10:46:23
为什么不简单地将名称解析为最后一步? – 2013-05-14 10:47:37
我在列名中使用下划线的数据框上使用aggregate()时遇到过这个问题。网络搜索到目前为止没有提出任何好的解释。但是,如果它与转换后的名称一起工作 - 正如里卡多所说,为什么不直接使用这些名称并在最后修复名称? – neilfws 2013-05-14 10:51:44