R中rpart和tree之间的区别

时间:2015-07-21 08:36:17

标签: r

我问rparttree完全相同,直到我遇到这个问题。

我有一个包含329列的数据框wikiWords。其中328个是预测变量,它们都是num。左边的是Vandal - 响应,是factorstr(wikiWords)是:

'data.frame':   3876 obs. of  329 variables:
 $ A accord                      : num  0 0 0 0 0 0 0 0 0 0 ...
 $ A actual                      : num  0 0 0 0 0 0 0 0 0 0 ...
 $ A ago                         : num  0 0 0 0 0 0 0 0 0 0 ...
 $ A agre                        : num  0 0 0 0 0 0 0 0 0 0 ...
 $ A analog                      : num  0 0 0 0 0 0 0 0 0 0 ...
 $ A appar                       : num  0 0 0 0 0 0 0 0 0 0 ...
 $ A arbitrari                   : num  0 0 0 0 0 0 0 0 0 0 ...
 $ A believ                      : num  0 0 0 0 0 0 0 0 0 0 ...
 $ A biolog                      : num  0 0 0 0 0 0 0 0 0 0 ...
 $ A biologyanalog               : num  0 0 0 0 0 0 0 0 0 0 ...
 $ A bodi                        : num  1 0 0 0 1 0 0 0 0 0 ...
 $ A call                        : num  1 0 0 0 1 0 0 0 0 0 ...
 ......
 $ Vandal                        : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...

这很好用:

wikitree = rpart(Vandal ~ .,data=wikiWords,method = 'class')

但这显示错误:

wikitree = tree(Vandal ~ .,data=wikiWords,method = 'class')

错误是:" [.data.frame(框架,预测变量)中的错误:选择了未定义的列"

我真的不知道出了什么问题。非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

这是由于您的列名存在问题,其中包含空格。导致此错误

这很好用:

set.seed(1000)
tmp <- data.frame(sample(0:1,100,replace=T, prob=c(0.5,.5)),V1=rnorm(100),V2=rnorm(100))
colnames(tmp) <- as.character(c('Target','aword','bword'))


library(rpart)
rpart(Target~.,data=tmp)

library(tree)
tree(Target~.,data=tmp)

这不起作用,因为列名中有空格

set.seed(1000)
tmp <- data.frame(sample(0:1,100,replace=T, prob=c(0.5, 0.5)),V1=rnorm(100),V2=rnorm(100))
colnames(tmp) <- as.character(c('Target','a word','b word'))

library(rpart)
rpart(Target~.,data=tmp)

library(tree)
tree(Target~.,data=tmp)