2010-02-25 4 views
3

Я уже несколько дней ударяю головой о rpart (пытаясь сделать деревья классификации для этого набора данных, которые у меня есть), и я думаю, что настало время задать вопрос об этом :-) Я уверен, что это что-то глупо, что я не вижу, но вот то, что я делал:Что делает rpart «Ошибка в as.character (x): не может принуждать тип« встроенный »к вектору символа типа« символ »?

EuropeWater <- read.csv(file=paste("/Users/artessaniccola/Documents/", 
         "Magic Briefcase/CityTypology/Europe_water.csv",sep="")) 
library(rpart) 
attach(EuropeWater) 
names(EuropeWater) 
[1] "City"   "waterpercapita_m3" "water_class"  "population"  
[5] "GDPpercapita" "area_km2"   "populationdensity" "climate"    
EuropeWater$water_class <- factor(EuropeWater$water_class, levels=1:3, 
            labels=c("Low", "Medium", "High")) 
EuropeWater$climate <- factor(EuropeWater$climate, levels=2:4, 
           labels=c("Arid", "Warm temperate", "Snow")) 
EuropeWater_tree <- rpart(EuropeWater$water_class ~ 
       population+GDPpercapita + area_km2 + populationdensity + 
       EuropeWater$climate, 
       data=EuropeWater, method=class) 
Error in as.character(x) : 
      cannot coerce type 'builtin' to vector of type 'character' 

и для жизни меня, я не могу понять, что ошибка о.

+3

Вы можете получить более быструю реакцию, если вы предоставите образец данных. Возможно, вы захотите извлечь что-то из пакета 'datasets', если это имеет смысл. – Shane

+0

Шейн вполне корректен: если ваше более сложное упражнение выходит из строя, начните с более простого, например. что «пример (rpart)» делает и уходит оттуда. –

ответ

3

Я хотел бы начать, фиксируя формулу: удалить избыточную EuropeWater как вы уже поставить data= аргумент:

res <- rpart(water_class ~ population + GDPpercapita + area_km2 + 
          populationdensity + climate, 
      data=EuropeWater, method="class") 

Кроме того, убедитесь, что все столбцы вашего data.frame имеют соответствующего типа. Может быть, некоторые из данных, прочитанных из файла csv, были ошибочно прочитаны как фактор? Быстрое summary(EuropeWater) может показать это.

+0

Я думаю, что 'str' может быть лучше для быстрого просмотра содержимого data.frame – Marek

+1

Конечно, или' sapply (EuropeWater, class) ', чтобы получить класс за столбцом, есть много вариантов. –

16

Это работает?

EuropeWater_tree <- rpart(EuropeWater$water_class ~ 
population+GDPpercapita + area_km2 + populationdensity + EuropeWater$climate, 
data=EuropeWater, method="class") 

Я думаю, вы должны указать тип метода.

+0

Хорошая добыча! Я тоже поправлю свой ответ. –

+0

добавление котировок типа метода было именно такой проблемой. Спасибо!!! – user281537

 Смежные вопросы

  • Нет связанных вопросов^_^