我问rpart
和tree
完全相同,直到我遇到这个问题。
我有一个包含329列的数据框wikiWords
。其中328个是预测变量,它们都是num
。左边的是Vandal
- 响应,是factor
。 str(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
(框架,预测变量)中的错误:选择了未定义的列"
我真的不知道出了什么问题。非常感谢任何帮助。
答案 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)